86cdfd4ad7b79a3221a6df196915322cd15fad08
[ppp.git] / pppd / ipv6cp.h
1 /*
2     ipv6cp.h - PPP IPV6 Control Protocol.
3     Copyright (C) 1999  Tommi Komulainen <Tommi.Komulainen@iki.fi>
4
5     This program is free software; you can redistribute it and/or modify
6     it under the terms of the GNU General Public License as published by
7     the Free Software Foundation; either version 2 of the License, or
8     (at your option) any later version.
9
10     This program is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13     GNU General Public License for more details.
14
15     You should have received a copy of the GNU General Public License
16     along with this program; if not, write to the Free Software
17     Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 */
19
20 /*  Original version, based on RFC2023 :
21
22     Copyright (c) 1995, 1996, 1997 Francis.Dupont@inria.fr, INRIA Rocquencourt,
23     Alain.Durand@imag.fr, IMAG,
24     Jean-Luc.Richier@imag.fr, IMAG-LSR.
25
26     Copyright (c) 1998, 1999 Francis.Dupont@inria.fr, GIE DYADE,
27     Alain.Durand@imag.fr, IMAG,
28     Jean-Luc.Richier@imag.fr, IMAG-LSR.
29
30     Ce travail a été fait au sein du GIE DYADE (Groupement d'Intérêt
31     Économique ayant pour membres BULL S.A. et l'INRIA).
32
33     Ce logiciel informatique est disponible aux conditions
34     usuelles dans la recherche, c'est-à-dire qu'il peut
35     être utilisé, copié, modifié, distribué à l'unique
36     condition que ce texte soit conservé afin que
37     l'origine de ce logiciel soit reconnue.
38
39     Le nom de l'Institut National de Recherche en Informatique
40     et en Automatique (INRIA), de l'IMAG, ou d'une personne morale
41     ou physique ayant participé à l'élaboration de ce logiciel ne peut
42     être utilisé sans son accord préalable explicite.
43
44     Ce logiciel est fourni tel quel sans aucune garantie,
45     support ou responsabilité d'aucune sorte.
46     Ce logiciel est dérivé de sources d'origine
47     "University of California at Berkeley" et
48     "Digital Equipment Corporation" couvertes par des copyrights.
49
50     L'Institut d'Informatique et de Mathématiques Appliquées de Grenoble (IMAG)
51     est une fédération d'unités mixtes de recherche du CNRS, de l'Institut National
52     Polytechnique de Grenoble et de l'Université Joseph Fourier regroupant
53     sept laboratoires dont le laboratoire Logiciels, Systèmes, Réseaux (LSR).
54
55     This work has been done in the context of GIE DYADE (joint R & D venture
56     between BULL S.A. and INRIA).
57
58     This software is available with usual "research" terms
59     with the aim of retain credits of the software. 
60     Permission to use, copy, modify and distribute this software for any
61     purpose and without fee is hereby granted, provided that the above
62     copyright notice and this permission notice appear in all copies,
63     and the name of INRIA, IMAG, or any contributor not be used in advertising
64     or publicity pertaining to this material without the prior explicit
65     permission. The software is provided "as is" without any
66     warranties, support or liabilities of any kind.
67     This software is derived from source code from
68     "University of California at Berkeley" and
69     "Digital Equipment Corporation" protected by copyrights.
70
71     Grenoble's Institute of Computer Science and Applied Mathematics (IMAG)
72     is a federation of seven research units funded by the CNRS, National
73     Polytechnic Institute of Grenoble and University Joseph Fourier.
74     The research unit in Software, Systems, Networks (LSR) is member of IMAG.
75 */
76
77 /*
78  * Derived from :
79  *
80  *
81  * ipcp.h - IP Control Protocol definitions.
82  *
83  * Copyright (c) 1989 Carnegie Mellon University.
84  * All rights reserved.
85  *
86  * Redistribution and use in source and binary forms are permitted
87  * provided that the above copyright notice and this paragraph are
88  * duplicated in all such forms and that any documentation,
89  * advertising materials, and other materials related to such
90  * distribution and use acknowledge that the software was developed
91  * by Carnegie Mellon University.  The name of the
92  * University may not be used to endorse or promote products derived
93  * from this software without specific prior written permission.
94  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
95  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
96  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
97  *
98  * $Id: ipv6cp.h,v 1.3 1999/09/30 19:57:45 masputra Exp $
99  */
100
101 /*
102  * Options.
103  */
104 #define CI_IFACEID      1       /* Interface Identifier */
105 #define CI_COMPRESSTYPE 2       /* Compression Type     */
106
107 /* No compression types yet defined.
108  *#define IPV6CP_COMP   0x004f
109  */
110 typedef struct ipv6cp_options {
111     int neg_ifaceid;            /* Negotiate interface identifier? */
112     int req_ifaceid;            /* Ask peer to send interface identifier? */
113     int accept_local;           /* accept peer's value for iface id? */
114     int opt_local;              /* ourtoken set by option */
115     int opt_remote;             /* histoken set by option */
116     int use_ip;                 /* use IP as interface identifier */
117 #if defined(SOL2)
118     int use_persistent;         /* use uniquely persistent value for address */
119 #endif /* defined(SOL2) */
120     int neg_vj;                 /* Van Jacobson Compression? */
121     u_short vj_protocol;        /* protocol value to use in VJ option */
122     eui64_t ourid, hisid;       /* Interface identifiers */
123 } ipv6cp_options;
124
125 extern fsm ipv6cp_fsm[];
126 extern ipv6cp_options ipv6cp_wantoptions[];
127 extern ipv6cp_options ipv6cp_gotoptions[];
128 extern ipv6cp_options ipv6cp_allowoptions[];
129 extern ipv6cp_options ipv6cp_hisoptions[];
130
131 extern struct protent ipv6cp_protent;