//pkgnet/tags/20230208/watt32/inc/netinet6/ah.h |
---|
0,0 → 1,98 |
/*!\file netinet6/ah.h |
* Authentication Header. |
*/ |
/* $FreeBSD: src/sys/netinet6/ah.h,v 1.7 2002/04/19 04:46:22 suz Exp $ */ |
/* $KAME: ah.h,v 1.16 2001/09/04 08:43:19 itojun Exp $ */ |
/* |
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. Neither the name of the project nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
*/ |
/* |
* RFC1826/2402 authentication header. |
*/ |
#ifndef _NETINET6_AH_H_ |
#define _NETINET6_AH_H_ |
#if defined(_KERNEL) && !defined(_LKM) |
#include "opt_inet.h" |
#endif |
struct ah { |
u_int8_t ah_nxt; /* Next Header */ |
u_int8_t ah_len; /* Length of data, in 32bit */ |
u_int16_t ah_reserve; /* Reserved for future use */ |
u_int32_t ah_spi; /* Security parameter index */ |
/* variable size, 32bit bound*/ /* Authentication data */ |
}; |
struct newah { |
u_int8_t ah_nxt; /* Next Header */ |
u_int8_t ah_len; /* Length of data + 1, in 32bit */ |
u_int16_t ah_reserve; /* Reserved for future use */ |
u_int32_t ah_spi; /* Security parameter index */ |
u_int32_t ah_seq; /* Sequence number field */ |
/* variable size, 32bit bound*/ /* Authentication data */ |
}; |
#ifdef _KERNEL |
struct secasvar; |
struct ah_algorithm_state { |
struct secasvar *sav; |
void* foo; /* per algorithm data - maybe */ |
}; |
struct ah_algorithm { |
int (*sumsiz) __P((struct secasvar *)); |
int (*mature) __P((struct secasvar *)); |
int keymin; /* in bits */ |
int keymax; /* in bits */ |
const char *name; |
int (*init) __P((struct ah_algorithm_state *, struct secasvar *)); |
void (*update) __P((struct ah_algorithm_state *, caddr_t, size_t)); |
void (*result) __P((struct ah_algorithm_state *, caddr_t)); |
}; |
#define AH_MAXSUMSIZE 16 |
extern const struct ah_algorithm *ah_algorithm_lookup __P((int)); |
/* cksum routines */ |
extern int ah_hdrlen __P((struct secasvar *)); |
extern size_t ah_hdrsiz __P((struct ipsecrequest *)); |
extern void ah4_input __P((struct mbuf *, int)); |
extern int ah4_output __P((struct mbuf *, struct ipsecrequest *)); |
extern int ah4_calccksum __P((struct mbuf *, caddr_t, size_t, |
const struct ah_algorithm *, struct secasvar *)); |
#endif /* _KERNEL */ |
#endif /* _NETINET6_AH_H_ */ |
//pkgnet/tags/20230208/watt32/inc/netinet6/ah6.h |
---|
0,0 → 1,56 |
/*!\file netinet6/ah6.h |
* IPv6 Authentication header. |
*/ |
/* $FreeBSD: src/sys/netinet6/ah6.h,v 1.4 2001/06/11 12:39:03 ume Exp $ */ |
/* $KAME: ah.h,v 1.13 2000/10/18 21:28:00 itojun Exp $ */ |
/* |
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. Neither the name of the project nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
*/ |
/* |
* RFC1826/2402 authentication header. |
*/ |
#ifndef _NETINET6_AH6_H_ |
#define _NETINET6_AH6_H_ |
#ifdef _KERNEL |
struct secasvar; |
extern int ah6_input (struct mbuf **, int *, int)); |
extern int ah6_output (struct mbuf *, u_char *, struct mbuf *, |
struct ipsecrequest *); |
extern int ah6_calccksum (struct mbuf *, caddr_t, size_t, |
const struct ah_algorithm *, struct secasvar *); |
extern void ah6_ctlinput (int, struct sockaddr *, void *); |
#endif |
#endif /*_NETINET6_AH6_H_*/ |
//pkgnet/tags/20230208/watt32/inc/netinet6/esp.h |
---|
0,0 → 1,113 |
/*!\file netinet6/esp.h |
* |
*/ |
/* $FreeBSD: src/sys/netinet6/esp.h,v 1.6 2002/04/19 04:46:22 suz Exp $ */ |
/* $KAME: esp.h,v 1.19 2001/09/04 08:43:19 itojun Exp $ */ |
/* |
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. Neither the name of the project nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
*/ |
/* |
* RFC1827/2406 Encapsulated Security Payload. |
*/ |
#ifndef _NETINET6_ESP_H_ |
#define _NETINET6_ESP_H_ |
#if defined(_KERNEL) && !defined(_LKM) |
#include "opt_inet.h" |
#endif |
struct esp { |
u_int32_t esp_spi; /* ESP */ |
/* variable size, 32bit bound *//* Initialization Vector */ |
/* variable size */ /* Payload data */ |
/* variable size */ /* padding */ |
/* 8bit */ /* pad size */ |
/* 8bit */ /* next header */ |
/* 8bit */ /* next header */ |
/* variable size, 32bit bound */ /* Authentication data (new IPsec) */ |
}; |
struct newesp { |
u_int32_t esp_spi; /* ESP */ |
u_int32_t esp_seq; /* Sequence number */ |
/* variable size */ /* (IV and) Payload data */ |
/* variable size */ /* padding */ |
/* 8bit */ /* pad size */ |
/* 8bit */ /* next header */ |
/* 8bit */ /* next header */ |
/* variable size, 32bit bound *//* Authentication data */ |
}; |
struct esptail { |
u_int8_t esp_padlen; /* pad length */ |
u_int8_t esp_nxt; /* Next header */ |
/* variable size, 32bit bound *//* Authentication data (new IPsec)*/ |
}; |
#ifdef _KERNEL |
struct secasvar; |
struct esp_algorithm { |
size_t padbound; /* pad boundary, in byte */ |
int ivlenval; /* iv length, in byte */ |
int (*mature) (struct secasvar *); |
int keymin; /* in bits */ |
int keymax; /* in bits */ |
int (*schedlen) (const struct esp_algorithm *); |
const char *name; |
int (*ivlen) (const struct esp_algorithm *, struct secasvar *); |
int (*decrypt) (struct mbuf *, size_t, |
struct secasvar *, const struct esp_algorithm *, int); |
int (*encrypt) (struct mbuf *, size_t, size_t, |
struct secasvar *, const struct esp_algorithm *, int); |
/* not supposed to be called directly */ |
int (*schedule) (const struct esp_algorithm *, struct secasvar *); |
int (*blockdecrypt) (const struct esp_algorithm *, |
struct secasvar *, u_int8_t *, u_int8_t *); |
int (*blockencrypt) (const struct esp_algorithm *, |
struct secasvar *, u_int8_t *, u_int8_t *); |
}; |
extern const struct esp_algorithm *esp_algorithm_lookup (int); |
extern int esp_max_ivlen (void); |
/* crypt routines */ |
extern int esp4_output (struct mbuf *, struct ipsecrequest *); |
extern void esp4_input (struct mbuf *, int); |
extern size_t esp_hdrsiz (struct ipsecrequest *); |
extern int esp_schedule (const struct esp_algorithm *, struct secasvar *); |
extern int esp_auth (struct mbuf *, size_t, size_t, |
struct secasvar *, u_char *); |
#endif /* _KERNEL */ |
#endif /* _NETINET6_ESP_H_ */ |
//pkgnet/tags/20230208/watt32/inc/netinet6/esp6.h |
---|
0,0 → 1,52 |
/*!\file netinet6/esp6.h |
* |
*/ |
/* $FreeBSD: src/sys/netinet6/esp6.h,v 1.4 2001/06/11 12:39:04 ume Exp $ */ |
/* $KAME: esp.h,v 1.16 2000/10/18 21:28:00 itojun Exp $ */ |
/* |
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. Neither the name of the project nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
*/ |
/* |
* RFC1827/2406 Encapsulated Security Payload. |
*/ |
#ifndef _NETINET6_ESP6_H_ |
#define _NETINET6_ESP6_H_ |
#ifdef _KERNEL |
extern int esp6_output __P((struct mbuf *, u_char *, struct mbuf *, |
struct ipsecrequest *)); |
extern int esp6_input __P((struct mbuf **, int *, int)); |
extern void esp6_ctlinput __P((int, struct sockaddr *, void *)); |
#endif /*_KERNEL*/ |
#endif /*_NETINET6_ESP6_H_*/ |
//pkgnet/tags/20230208/watt32/inc/netinet6/esp_rijn.h |
---|
0,0 → 1,43 |
/*!\file netinet6/esp_rijn.h |
* |
*/ |
/* $FreeBSD: src/sys/netinet6/esp_rijndael.h,v 1.1 2001/06/11 12:39:05 ume Exp $ */ |
/* $KAME: esp_rijndael.h,v 1.1 2000/09/20 18:15:22 itojun Exp $ */ |
/* |
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. Neither the name of the project nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
*/ |
int esp_rijndael_schedlen __P((const struct esp_algorithm *)); |
int esp_rijndael_schedule __P((const struct esp_algorithm *, |
struct secasvar *)); |
int esp_rijndael_blockdecrypt __P((const struct esp_algorithm *, |
struct secasvar *, u_int8_t *, u_int8_t *)); |
int esp_rijndael_blockencrypt __P((const struct esp_algorithm *, |
struct secasvar *, u_int8_t *, u_int8_t *)); |
//pkgnet/tags/20230208/watt32/inc/netinet6/in6.h |
---|
0,0 → 1,666 |
/*!\file netinet6/in6.h |
* |
*/ |
/* $FreeBSD: src/sys/netinet6/in6.h,v 1.22 2002/07/25 20:40:09 ume Exp $ */ |
/* $KAME: in6.h,v 1.89 2001/05/27 13:28:35 itojun Exp $ */ |
/* |
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. Neither the name of the project nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
*/ |
/* |
* Copyright (c) 1982, 1986, 1990, 1993 |
* The Regents of the University of California. All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. All advertising materials mentioning features or use of this software |
* must display the following acknowledgement: |
* This product includes software developed by the University of |
* California, Berkeley and its contributors. |
* 4. Neither the name of the University nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
* |
* @(#)in.h 8.3 (Berkeley) 1/3/94 |
*/ |
#ifndef _NETINET6_IN6_H_ |
#define _NETINET6_IN6_H_ |
/* |
* Identification of the network protocol stack |
* for *BSD-current/release: http://www.kame.net/dev/cvsweb.cgi/kame/COVERAGE |
* has the table of implementation/integration differences. |
*/ |
#define __KAME__ |
#define __KAME_VERSION "20010528/FreeBSD" |
/* |
* Local port number conventions: |
* |
* Ports < IPPORT_RESERVED are reserved for privileged processes (e.g. root), |
* unless a kernel is compiled with IPNOPRIVPORTS defined. |
* |
* When a user does a bind(2) or connect(2) with a port number of zero, |
* a non-conflicting local port address is chosen. |
* |
* The default range is IPPORT_ANONMIN to IPPORT_ANONMAX, although |
* that is settable by sysctl(3); net.inet.ip.anonportmin and |
* net.inet.ip.anonportmax respectively. |
* |
* A user may set the IPPROTO_IP option IP_PORTRANGE to change this |
* default assignment range. |
* |
* The value IP_PORTRANGE_DEFAULT causes the default behavior. |
* |
* The value IP_PORTRANGE_HIGH is the same as IP_PORTRANGE_DEFAULT, |
* and exists only for FreeBSD compatibility purposes. |
* |
* The value IP_PORTRANGE_LOW changes the range to the "low" are |
* that is (by convention) restricted to privileged processes. |
* This convention is based on "vouchsafe" principles only. |
* It is only secure if you trust the remote host to restrict these ports. |
* The range is IPPORT_RESERVEDMIN to IPPORT_RESERVEDMAX. |
*/ |
#if __BSD_VISIBLE |
#define IPV6PORT_RESERVED 1024 |
#define IPV6PORT_ANONMIN 49152 |
#define IPV6PORT_ANONMAX 65535 |
#define IPV6PORT_RESERVEDMIN 600 |
#define IPV6PORT_RESERVEDMAX (IPV6PORT_RESERVED-1) |
#endif |
/* |
* IPv6 address |
*/ |
struct in6_addr { |
union { |
uint8_t __u6_addr8[16]; |
uint16_t __u6_addr16[8]; |
uint32_t __u6_addr32[4]; |
} __u6_addr; /* 128-bit IP6 address */ |
}; |
#define s6_addr __u6_addr.__u6_addr8 |
#ifdef _KERNEL /* XXX nonstandard */ |
#define s6_addr8 __u6_addr.__u6_addr8 |
#define s6_addr16 __u6_addr.__u6_addr16 |
#define s6_addr32 __u6_addr.__u6_addr32 |
#endif |
#define INET6_ADDRSTRLEN 46 |
/* |
* XXX missing POSIX.1-2001 macro IPPROTO_IPV6. |
*/ |
/* |
* Socket address for IPv6 |
*/ |
#if __BSD_VISIBLE |
#define SIN6_LEN |
#endif |
struct sockaddr_in6 { |
uint8_t sin6_len; /* length of this struct */ |
sa_family_t sin6_family; /* AF_INET6 */ |
in_port_t sin6_port; /* Transport layer port # */ |
uint32_t sin6_flowinfo; /* IP6 flow information */ |
struct in6_addr sin6_addr; /* IP6 address */ |
uint32_t sin6_scope_id; /* scope zone index */ |
}; |
/* |
* Local definition for masks |
*/ |
#ifdef _KERNEL /* XXX nonstandard */ |
#define IN6MASK0 {{{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }}} |
#define IN6MASK32 {{{ 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, \ |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }}} |
#define IN6MASK64 {{{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \ |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }}} |
#define IN6MASK96 {{{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \ |
0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 }}} |
#define IN6MASK128 {{{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \ |
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }}} |
#endif |
#ifdef _KERNEL |
extern const struct sockaddr_in6 sa6_any; |
extern const struct in6_addr in6mask0; |
extern const struct in6_addr in6mask32; |
extern const struct in6_addr in6mask64; |
extern const struct in6_addr in6mask96; |
extern const struct in6_addr in6mask128; |
#endif /* _KERNEL */ |
/* |
* Macros started with IPV6_ADDR is KAME local |
*/ |
#ifdef _KERNEL /* XXX nonstandard */ |
#if _BYTE_ORDER == _BIG_ENDIAN |
#define IPV6_ADDR_INT32_ONE 1 |
#define IPV6_ADDR_INT32_TWO 2 |
#define IPV6_ADDR_INT32_MNL 0xff010000 |
#define IPV6_ADDR_INT32_MLL 0xff020000 |
#define IPV6_ADDR_INT32_SMP 0x0000ffff |
#define IPV6_ADDR_INT16_ULL 0xfe80 |
#define IPV6_ADDR_INT16_USL 0xfec0 |
#define IPV6_ADDR_INT16_MLL 0xff02 |
#elif _BYTE_ORDER == _LITTLE_ENDIAN |
#define IPV6_ADDR_INT32_ONE 0x01000000 |
#define IPV6_ADDR_INT32_TWO 0x02000000 |
#define IPV6_ADDR_INT32_MNL 0x000001ff |
#define IPV6_ADDR_INT32_MLL 0x000002ff |
#define IPV6_ADDR_INT32_SMP 0xffff0000 |
#define IPV6_ADDR_INT16_ULL 0x80fe |
#define IPV6_ADDR_INT16_USL 0xc0fe |
#define IPV6_ADDR_INT16_MLL 0x02ff |
#endif |
#endif |
/* |
* Definition of some useful macros to handle IP6 addresses |
*/ |
#if __BSD_VISIBLE |
#define IN6ADDR_ANY_INIT \ |
{{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }}} |
#define IN6ADDR_LOOPBACK_INIT \ |
{{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }}} |
#define IN6ADDR_NODELOCAL_ALLNODES_INIT \ |
{{{ 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }}} |
#define IN6ADDR_LINKLOCAL_ALLNODES_INIT \ |
{{{ 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }}} |
#define IN6ADDR_LINKLOCAL_ALLROUTERS_INIT \ |
{{{ 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02 }}} |
#endif |
extern const struct in6_addr in6addr_any; |
extern const struct in6_addr in6addr_loopback; |
#if __BSD_VISIBLE |
extern const struct in6_addr in6addr_nodelocal_allnodes; |
extern const struct in6_addr in6addr_linklocal_allnodes; |
extern const struct in6_addr in6addr_linklocal_allrouters; |
#endif |
/* |
* Equality |
* NOTE: Some of kernel programming environment (for example, openbsd/sparc) |
* does not supply memcmp(). For userland memcmp() is preferred as it is |
* in ANSI standard. |
*/ |
#ifdef _KERNEL |
#define IN6_ARE_ADDR_EQUAL(a, b) \ |
(bcmp(&(a)->s6_addr[0], &(b)->s6_addr[0], sizeof(struct in6_addr)) == 0) |
#else |
#if __BSD_VISIBLE |
#define IN6_ARE_ADDR_EQUAL(a, b) \ |
(memcmp(&(a)->s6_addr[0], &(b)->s6_addr[0], sizeof(struct in6_addr)) == 0) |
#endif |
#endif |
#ifdef _KERNEL /* non standard */ |
/* see if two addresses are equal in a scope-conscious manner. */ |
#define SA6_ARE_ADDR_EQUAL(a, b) \ |
(((a)->sin6_scope_id == 0 || (b)->sin6_scope_id == 0 || \ |
((a)->sin6_scope_id == (b)->sin6_scope_id)) && \ |
(bcmp(&(a)->sin6_addr, &(b)->sin6_addr, sizeof(struct in6_addr)) == 0)) |
#endif |
/* |
* Unspecified |
*/ |
#define IN6_IS_ADDR_UNSPECIFIED(a) \ |
((*(const u_int32_t *)(const void *)(&(a)->s6_addr[0]) == 0) && \ |
(*(const u_int32_t *)(const void *)(&(a)->s6_addr[4]) == 0) && \ |
(*(const u_int32_t *)(const void *)(&(a)->s6_addr[8]) == 0) && \ |
(*(const u_int32_t *)(const void *)(&(a)->s6_addr[12]) == 0)) |
/* |
* Loopback |
*/ |
#define IN6_IS_ADDR_LOOPBACK(a) \ |
((*(const u_int32_t *)(const void *)(&(a)->s6_addr[0]) == 0) && \ |
(*(const u_int32_t *)(const void *)(&(a)->s6_addr[4]) == 0) && \ |
(*(const u_int32_t *)(const void *)(&(a)->s6_addr[8]) == 0) && \ |
(*(const u_int32_t *)(const void *)(&(a)->s6_addr[12]) == ntohl(1))) |
/* |
* IPv4 compatible |
*/ |
#define IN6_IS_ADDR_V4COMPAT(a) \ |
((*(const u_int32_t *)(const void *)(&(a)->s6_addr[0]) == 0) && \ |
(*(const u_int32_t *)(const void *)(&(a)->s6_addr[4]) == 0) && \ |
(*(const u_int32_t *)(const void *)(&(a)->s6_addr[8]) == 0) && \ |
(*(const u_int32_t *)(const void *)(&(a)->s6_addr[12]) != 0) && \ |
(*(const u_int32_t *)(const void *)(&(a)->s6_addr[12]) != ntohl(1))) |
/* |
* Mapped |
*/ |
#define IN6_IS_ADDR_V4MAPPED(a) \ |
((*(const u_int32_t *)(const void *)(&(a)->s6_addr[0]) == 0) && \ |
(*(const u_int32_t *)(const void *)(&(a)->s6_addr[4]) == 0) && \ |
(*(const u_int32_t *)(const void *)(&(a)->s6_addr[8]) == ntohl(0x0000ffff))) |
/* |
* KAME Scope Values |
*/ |
#ifdef _KERNEL /* XXX nonstandard */ |
#define IPV6_ADDR_SCOPE_NODELOCAL 0x01 |
#define IPV6_ADDR_SCOPE_LINKLOCAL 0x02 |
#define IPV6_ADDR_SCOPE_SITELOCAL 0x05 |
#define IPV6_ADDR_SCOPE_ORGLOCAL 0x08 /* just used in this file */ |
#define IPV6_ADDR_SCOPE_GLOBAL 0x0e |
#else |
#define __IPV6_ADDR_SCOPE_NODELOCAL 0x01 |
#define __IPV6_ADDR_SCOPE_LINKLOCAL 0x02 |
#define __IPV6_ADDR_SCOPE_SITELOCAL 0x05 |
#define __IPV6_ADDR_SCOPE_ORGLOCAL 0x08 /* just used in this file */ |
#define __IPV6_ADDR_SCOPE_GLOBAL 0x0e |
#endif |
/* |
* Unicast Scope |
* Note that we must check topmost 10 bits only, not 16 bits (see RFC2373). |
*/ |
#define IN6_IS_ADDR_LINKLOCAL(a) \ |
(((a)->s6_addr[0] == 0xfe) && (((a)->s6_addr[1] & 0xc0) == 0x80)) |
#define IN6_IS_ADDR_SITELOCAL(a) \ |
(((a)->s6_addr[0] == 0xfe) && (((a)->s6_addr[1] & 0xc0) == 0xc0)) |
/* |
* Multicast |
*/ |
#define IN6_IS_ADDR_MULTICAST(a) ((a)->s6_addr[0] == 0xff) |
#ifdef _KERNEL /* XXX nonstandard */ |
#define IPV6_ADDR_MC_SCOPE(a) ((a)->s6_addr[1] & 0x0f) |
#else |
#define __IPV6_ADDR_MC_SCOPE(a) ((a)->s6_addr[1] & 0x0f) |
#endif |
/* |
* Multicast Scope |
*/ |
#ifdef _KERNEL /* refers nonstandard items */ |
#define IN6_IS_ADDR_MC_NODELOCAL(a) \ |
(IN6_IS_ADDR_MULTICAST(a) && \ |
(IPV6_ADDR_MC_SCOPE(a) == IPV6_ADDR_SCOPE_NODELOCAL)) |
#define IN6_IS_ADDR_MC_LINKLOCAL(a) \ |
(IN6_IS_ADDR_MULTICAST(a) && \ |
(IPV6_ADDR_MC_SCOPE(a) == IPV6_ADDR_SCOPE_LINKLOCAL)) |
#define IN6_IS_ADDR_MC_SITELOCAL(a) \ |
(IN6_IS_ADDR_MULTICAST(a) && \ |
(IPV6_ADDR_MC_SCOPE(a) == IPV6_ADDR_SCOPE_SITELOCAL)) |
#define IN6_IS_ADDR_MC_ORGLOCAL(a) \ |
(IN6_IS_ADDR_MULTICAST(a) && \ |
(IPV6_ADDR_MC_SCOPE(a) == IPV6_ADDR_SCOPE_ORGLOCAL)) |
#define IN6_IS_ADDR_MC_GLOBAL(a) \ |
(IN6_IS_ADDR_MULTICAST(a) && \ |
(IPV6_ADDR_MC_SCOPE(a) == IPV6_ADDR_SCOPE_GLOBAL)) |
#else |
#define IN6_IS_ADDR_MC_NODELOCAL(a) \ |
(IN6_IS_ADDR_MULTICAST(a) && \ |
(__IPV6_ADDR_MC_SCOPE(a) == __IPV6_ADDR_SCOPE_NODELOCAL)) |
#define IN6_IS_ADDR_MC_LINKLOCAL(a) \ |
(IN6_IS_ADDR_MULTICAST(a) && \ |
(__IPV6_ADDR_MC_SCOPE(a) == __IPV6_ADDR_SCOPE_LINKLOCAL)) |
#define IN6_IS_ADDR_MC_SITELOCAL(a) \ |
(IN6_IS_ADDR_MULTICAST(a) && \ |
(__IPV6_ADDR_MC_SCOPE(a) == __IPV6_ADDR_SCOPE_SITELOCAL)) |
#define IN6_IS_ADDR_MC_ORGLOCAL(a) \ |
(IN6_IS_ADDR_MULTICAST(a) && \ |
(__IPV6_ADDR_MC_SCOPE(a) == __IPV6_ADDR_SCOPE_ORGLOCAL)) |
#define IN6_IS_ADDR_MC_GLOBAL(a) \ |
(IN6_IS_ADDR_MULTICAST(a) && \ |
(__IPV6_ADDR_MC_SCOPE(a) == __IPV6_ADDR_SCOPE_GLOBAL)) |
#endif |
#ifdef _KERNEL /* nonstandard */ |
/* |
* KAME Scope |
*/ |
#define IN6_IS_SCOPE_LINKLOCAL(a) \ |
((IN6_IS_ADDR_LINKLOCAL(a)) || \ |
(IN6_IS_ADDR_MC_LINKLOCAL(a))) |
#define IFA6_IS_DEPRECATED(a) \ |
((a)->ia6_lifetime.ia6t_preferred != 0 && \ |
(a)->ia6_lifetime.ia6t_preferred < time_second) |
#define IFA6_IS_INVALID(a) \ |
((a)->ia6_lifetime.ia6t_expire != 0 && \ |
(a)->ia6_lifetime.ia6t_expire < time_second) |
#endif /* _KERNEL */ |
/* |
* IP6 route structure |
*/ |
struct route_in6 { |
struct rtentry *ro_rt; |
struct sockaddr_in6 ro_dst; |
}; |
/* |
* Options for use with [gs]etsockopt at the IPV6 level. |
* First word of comment is data type; bool is stored in int. |
*/ |
#define IPV6_JOIN_GROUP 12 /* ip6_mreq; join a group membership */ |
#define IPV6_LEAVE_GROUP 13 /* ip6_mreq; leave a group membership */ |
#define IPV6_MULTICAST_HOPS 10 /* int; set/get IP6 multicast hops */ |
#define IPV6_MULTICAST_IF 9 /* u_int; set/get IP6 multicast i/f */ |
#define IPV6_MULTICAST_LOOP 11 /* u_int; set/get IP6 multicast loopback */ |
#define IPV6_UNICAST_HOPS 4 /* int; IP6 hops */ |
#define IPV6_V6ONLY 27 /* bool; only bind INET6 at wildcard bind */ |
#if __BSD_VISIBLE |
/* no hdrincl */ |
#if 0 /* the followings are relic in IPv4 and hence are disabled */ |
#define IPV6_OPTIONS 1 /* buf/ip6_opts; set/get IP6 options */ |
#define IPV6_RECVOPTS 5 /* bool; receive all IP6 opts w/dgram */ |
#define IPV6_RECVRETOPTS 6 /* bool; receive IP6 opts for response */ |
#define IPV6_RECVDSTADDR 7 /* bool; receive IP6 dst addr w/dgram */ |
#define IPV6_RETOPTS 8 /* ip6_opts; set/get IP6 options */ |
#endif |
#define IPV6_SOCKOPT_RESERVED1 3 /* reserved for future use */ |
#define IPV6_PORTRANGE 14 /* int; range to choose for unspec port */ |
#define ICMP6_FILTER 18 /* icmp6_filter; icmp6 filter */ |
/* RFC2292 options */ |
#define IPV6_PKTINFO 19 /* bool; send/recv if, src/dst addr */ |
#define IPV6_HOPLIMIT 20 /* bool; hop limit */ |
#define IPV6_NEXTHOP 21 /* bool; next hop addr */ |
#define IPV6_HOPOPTS 22 /* bool; hop-by-hop option */ |
#define IPV6_DSTOPTS 23 /* bool; destination option */ |
#define IPV6_RTHDR 24 /* bool; routing header */ |
#define IPV6_PKTOPTIONS 25 /* buf/cmsghdr; set/get IPv6 options */ |
#define IPV6_CHECKSUM 26 /* int; checksum offset for raw socket */ |
#ifndef _KERNEL |
#define IPV6_BINDV6ONLY IPV6_V6ONLY |
#endif |
#if 1 /* IPSEC */ |
#define IPV6_IPSEC_POLICY 28 /* struct; get/set security policy */ |
#endif |
#define IPV6_FAITH 29 /* bool; accept FAITH'ed connections */ |
#if 1 /* IPV6FIREWALL */ |
#define IPV6_FW_ADD 30 /* add a firewall rule to chain */ |
#define IPV6_FW_DEL 31 /* delete a firewall rule from chain */ |
#define IPV6_FW_FLUSH 32 /* flush firewall rule chain */ |
#define IPV6_FW_ZERO 33 /* clear single/all firewall counter(s) */ |
#define IPV6_FW_GET 34 /* get entire firewall rule chain */ |
#endif |
/* to define items, should talk with KAME guys first, for *BSD compatibility */ |
#define IPV6_RTHDR_LOOSE 0 /* this hop need not be a neighbor. XXX old spec */ |
#define IPV6_RTHDR_STRICT 1 /* this hop must be a neighbor. XXX old spec */ |
#define IPV6_RTHDR_TYPE_0 0 /* IPv6 routing header type 0 */ |
/* |
* Defaults and limits for options |
*/ |
#define IPV6_DEFAULT_MULTICAST_HOPS 1 /* normally limit m'casts to 1 hop */ |
#define IPV6_DEFAULT_MULTICAST_LOOP 1 /* normally hear sends if a member */ |
/* |
* Argument structure for IPV6_JOIN_GROUP and IPV6_LEAVE_GROUP. |
*/ |
struct ipv6_mreq { |
struct in6_addr ipv6mr_multiaddr; |
unsigned int ipv6mr_interface; |
}; |
/* |
* IPV6_PKTINFO: Packet information(RFC2292 sec 5) |
*/ |
struct in6_pktinfo { |
struct in6_addr ipi6_addr; /* src/dst IPv6 address */ |
unsigned int ipi6_ifindex; /* send/recv interface index */ |
}; |
/* |
* Argument for IPV6_PORTRANGE: |
* - which range to search when port is unspecified at bind() or connect() |
*/ |
#define IPV6_PORTRANGE_DEFAULT 0 /* default range */ |
#define IPV6_PORTRANGE_HIGH 1 /* "high" - request firewall bypass */ |
#define IPV6_PORTRANGE_LOW 2 /* "low" - vouchsafe security */ |
/* |
* Definitions for inet6 sysctl operations. |
* |
* Third level is protocol number. |
* Fourth level is desired variable within that protocol. |
*/ |
#define IPV6PROTO_MAXID (IPPROTO_PIM + 1) /* don't list to IPV6PROTO_MAX */ |
#define CTL_IPV6PROTO_NAMES { \ |
{ 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, \ |
{ 0, 0 }, \ |
{ "tcp6", CTLTYPE_NODE }, \ |
{ 0, 0 }, \ |
{ 0, 0 }, \ |
{ 0, 0 }, \ |
{ 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, \ |
{ 0, 0 }, \ |
{ 0, 0 }, \ |
{ "udp6", CTLTYPE_NODE }, \ |
{ 0, 0 }, \ |
{ 0, 0 }, \ |
{ 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, \ |
{ 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, \ |
{ 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, \ |
{ 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, \ |
{ 0, 0 }, \ |
{ "ip6", CTLTYPE_NODE }, \ |
{ 0, 0 }, \ |
{ 0, 0 }, \ |
{ 0, 0 }, \ |
{ 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, \ |
{ 0, 0 }, \ |
{ "ipsec6", CTLTYPE_NODE }, \ |
{ 0, 0 }, \ |
{ 0, 0 }, \ |
{ 0, 0 }, \ |
{ 0, 0 }, \ |
{ 0, 0 }, \ |
{ 0, 0 }, \ |
{ "icmp6", CTLTYPE_NODE }, \ |
{ 0, 0 }, \ |
{ 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, \ |
{ 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, \ |
{ 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, \ |
{ 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, \ |
{ 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, \ |
{ 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, \ |
{ 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, \ |
{ 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, \ |
{ 0, 0 }, \ |
{ 0, 0 }, \ |
{ 0, 0 }, \ |
{ "pim6", CTLTYPE_NODE }, \ |
} |
/* |
* Names for IP sysctl objects |
*/ |
#define IPV6CTL_FORWARDING 1 /* act as router */ |
#define IPV6CTL_SENDREDIRECTS 2 /* may send redirects when forwarding*/ |
#define IPV6CTL_DEFHLIM 3 /* default Hop-Limit */ |
#ifdef notyet |
#define IPV6CTL_DEFMTU 4 /* default MTU */ |
#endif |
#define IPV6CTL_FORWSRCRT 5 /* forward source-routed dgrams */ |
#define IPV6CTL_STATS 6 /* stats */ |
#define IPV6CTL_MRTSTATS 7 /* multicast forwarding stats */ |
#define IPV6CTL_MRTPROTO 8 /* multicast routing protocol */ |
#define IPV6CTL_MAXFRAGPACKETS 9 /* max packets reassembly queue */ |
#define IPV6CTL_SOURCECHECK 10 /* verify source route and intf */ |
#define IPV6CTL_SOURCECHECK_LOGINT 11 /* minimume logging interval */ |
#define IPV6CTL_ACCEPT_RTADV 12 |
#define IPV6CTL_KEEPFAITH 13 |
#define IPV6CTL_LOG_INTERVAL 14 |
#define IPV6CTL_HDRNESTLIMIT 15 |
#define IPV6CTL_DAD_COUNT 16 |
#define IPV6CTL_AUTO_FLOWLABEL 17 |
#define IPV6CTL_DEFMCASTHLIM 18 |
#define IPV6CTL_GIF_HLIM 19 /* default HLIM for gif encap packet */ |
#define IPV6CTL_KAME_VERSION 20 |
#define IPV6CTL_USE_DEPRECATED 21 /* use deprecated addr (RFC2462 5.5.4) */ |
#define IPV6CTL_RR_PRUNE 22 /* walk timer for router renumbering */ |
#if 0 /* obsolete */ |
#define IPV6CTL_MAPPED_ADDR 23 |
#endif |
#define IPV6CTL_V6ONLY 24 |
#define IPV6CTL_RTEXPIRE 25 /* cloned route expiration time */ |
#define IPV6CTL_RTMINEXPIRE 26 /* min value for expiration time */ |
#define IPV6CTL_RTMAXCACHE 27 /* trigger level for dynamic expire */ |
#define IPV6CTL_USETEMPADDR 32 /* use temporary addresses (RFC3041) */ |
#define IPV6CTL_TEMPPLTIME 33 /* preferred lifetime for tmpaddrs */ |
#define IPV6CTL_TEMPVLTIME 34 /* valid lifetime for tmpaddrs */ |
#define IPV6CTL_AUTO_LINKLOCAL 35 /* automatic link-local addr assign */ |
#define IPV6CTL_RIP6STATS 36 /* raw_ip6 stats */ |
/* New entries should be added here from current IPV6CTL_MAXID value. */ |
/* to define items, should talk with KAME guys first, for *BSD compatibility */ |
#define IPV6CTL_MAXID 37 |
/* |
* Redefinition of mbuf flags |
*/ |
#define M_AUTHIPHDR M_PROTO2 |
#define M_DECRYPTED M_PROTO3 |
#define M_LOOP M_PROTO4 |
#define M_AUTHIPDGM M_PROTO5 |
#ifdef _KERNEL |
struct cmsghdr; |
int in6_cksum __P((struct mbuf *, u_int8_t, u_int32_t, u_int32_t)); |
int in6_localaddr __P((struct in6_addr *)); |
int in6_addrscope __P((struct in6_addr *)); |
struct in6_ifaddr *in6_ifawithscope __P((struct ifnet *, struct in6_addr *)); |
struct in6_ifaddr *in6_ifawithifp __P((struct ifnet *, struct in6_addr *)); |
extern void in6_if_up __P((struct ifnet *)); |
struct sockaddr; |
extern u_char ip6_protox[]; |
void in6_sin6_2_sin __P((struct sockaddr_in *sin, |
struct sockaddr_in6 *sin6)); |
void in6_sin_2_v4mapsin6 __P((struct sockaddr_in *sin, |
struct sockaddr_in6 *sin6)); |
void in6_sin6_2_sin_in_sock __P((struct sockaddr *nam)); |
void in6_sin_2_v4mapsin6_in_sock __P((struct sockaddr **nam)); |
#define satosin6(sa) ((struct sockaddr_in6 *)(sa)) |
#define sin6tosa(sin6) ((struct sockaddr *)(sin6)) |
#define ifatoia6(ifa) ((struct in6_ifaddr *)(ifa)) |
extern int (*faithprefix_p)(struct in6_addr *); |
#endif /* _KERNEL */ |
#ifdef _BSD_SIZE_T_ |
typedef _BSD_SIZE_T_ size_t; |
#undef _BSD_SIZE_T_ |
#endif |
__BEGIN_DECLS |
struct cmsghdr; |
extern int inet6_option_space __P((int)); |
extern int inet6_option_init __P((void *, struct cmsghdr **, int)); |
extern int inet6_option_append __P((struct cmsghdr *, const uint8_t *, |
int, int)); |
extern uint8_t *inet6_option_alloc __P((struct cmsghdr *, int, int, int)); |
extern int inet6_option_next __P((const struct cmsghdr *, uint8_t **)); |
extern int inet6_option_find __P((const struct cmsghdr *, uint8_t **, int)); |
extern size_t inet6_rthdr_space __P((int, int)); |
extern struct cmsghdr *inet6_rthdr_init __P((void *, int)); |
extern int inet6_rthdr_add __P((struct cmsghdr *, const struct in6_addr *, |
unsigned int)); |
extern int inet6_rthdr_lasthop __P((struct cmsghdr *, unsigned int)); |
#if 0 /* not implemented yet */ |
extern int inet6_rthdr_reverse __P((const struct cmsghdr *, struct cmsghdr *)); |
#endif |
extern int inet6_rthdr_segments __P((const struct cmsghdr *)); |
extern struct in6_addr *inet6_rthdr_getaddr __P((struct cmsghdr *, int)); |
extern int inet6_rthdr_getflags __P((const struct cmsghdr *, int)); |
extern int inet6_opt_init __P((void *, size_t)); |
extern int inet6_opt_append __P((void *, size_t, int, uint8_t, |
size_t, uint8_t, void **)); |
extern int inet6_opt_finish __P((void *, size_t, int)); |
extern int inet6_opt_set_val __P((void *, size_t, void *, int)); |
extern int inet6_opt_next __P((void *, size_t, int, uint8_t *, |
size_t *, void **)); |
extern int inet6_opt_find __P((void *, size_t, int, uint8_t, |
size_t *, void **)); |
extern int inet6_opt_get_val __P((void *, size_t, void *, int)); |
extern size_t inet6_rth_space __P((int, int)); |
extern void *inet6_rth_init __P((void *, int, int, int)); |
extern int inet6_rth_add __P((void *, const struct in6_addr *)); |
extern int inet6_rth_reverse __P((const void *, void *)); |
extern int inet6_rth_segments __P((const void *)); |
extern struct in6_addr *inet6_rth_getaddr __P((const void *, int)); |
__END_DECLS |
#endif /* __BSD_VISIBLE */ |
#endif /* !_NETINET6_IN6_H_ */ |
//pkgnet/tags/20230208/watt32/inc/netinet6/in6_gif.h |
---|
0,0 → 1,46 |
/*!\file netinet6/in6_gif.h |
* |
*/ |
/* $FreeBSD: src/sys/netinet6/in6_gif.h,v 1.3 2000/07/04 16:35:09 itojun Exp $ */ |
/* $KAME: in6_gif.h,v 1.5 2000/04/14 08:36:03 itojun Exp $ */ |
/* |
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. Neither the name of the project nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
*/ |
#ifndef _NETINET6_IN6_GIF_H_ |
#define _NETINET6_IN6_GIF_H_ |
#define GIF_HLIM 30 |
int in6_gif_input __P((struct mbuf **, int *, int)); |
int in6_gif_output __P((struct ifnet *, int, struct mbuf *, struct rtentry *)); |
int gif_encapcheck6 __P((const struct mbuf *, int, int, void *)); |
#endif /*_NETINET6_IN6_GIF_H_*/ |
//pkgnet/tags/20230208/watt32/inc/netinet6/in6_ifat.h |
---|
0,0 → 1,50 |
/*!\file netinet6/in6_ifat.h |
* |
*/ |
/* $FreeBSD: src/sys/netinet6/in6_ifattach.h,v 1.3 2001/06/11 12:39:05 ume Exp $ */ |
/* $KAME: in6_ifattach.h,v 1.14 2001/02/08 12:48:39 jinmei Exp $ */ |
/* |
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. Neither the name of the project nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
*/ |
#ifndef _NETINET6_IN6_IFATTACH_H_ |
#define _NETINET6_IN6_IFATTACH_H_ |
#ifdef _KERNEL |
void in6_nigroup_attach __P((const char *, int)); |
void in6_nigroup_detach __P((const char *, int)); |
void in6_ifattach __P((struct ifnet *, struct ifnet *)); |
void in6_ifdetach __P((struct ifnet *)); |
void in6_get_tmpifid __P((struct ifnet *, u_int8_t *, const u_int8_t *, int)); |
void in6_tmpaddrtimer __P((void *)); |
int in6_nigroup __P((struct ifnet *, const char *, int, struct in6_addr *)); |
#endif /* _KERNEL */ |
#endif /* _NETINET6_IN6_IFATTACH_H_ */ |
//pkgnet/tags/20230208/watt32/inc/netinet6/in6_pcb.h |
---|
0,0 → 1,116 |
/*!\file netinet6/in6_pcb.h |
* |
*/ |
/* $FreeBSD: src/sys/netinet6/in6_pcb.h,v 1.8 2002/06/14 08:35:21 hsu Exp $ */ |
/* $KAME: in6_pcb.h,v 1.13 2001/02/06 09:16:53 itojun Exp $ */ |
/* |
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. Neither the name of the project nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
* |
*/ |
/* |
* Copyright (c) 1982, 1986, 1990, 1993 |
* The Regents of the University of California. All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. All advertising materials mentioning features or use of this software |
* must display the following acknowledgement: |
* This product includes software developed by the University of |
* California, Berkeley and its contributors. |
* 4. Neither the name of the University nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
* |
* @(#)in_pcb.h 8.1 (Berkeley) 6/10/93 |
*/ |
#ifndef _NETINET6_IN6_PCB_H_ |
#define _NETINET6_IN6_PCB_H_ |
#ifdef _KERNEL |
#define satosin6(sa) ((struct sockaddr_in6 *)(sa)) |
#define sin6tosa(sin6) ((struct sockaddr *)(sin6)) |
#define ifatoia6(ifa) ((struct in6_ifaddr *)(ifa)) |
void in6_pcbpurgeif0 __P((struct in6pcb *, struct ifnet *)); |
void in6_losing __P((struct inpcb *)); |
int in6_pcballoc __P((struct socket *, struct inpcbinfo *, struct thread *)); |
int in6_pcbbind __P((struct inpcb *, struct sockaddr *, struct thread *)); |
int in6_pcbconnect __P((struct inpcb *, struct sockaddr *, struct thread *)); |
void in6_pcbdetach __P((struct inpcb *)); |
void in6_pcbdisconnect __P((struct inpcb *)); |
int in6_pcbladdr __P((struct inpcb *, struct sockaddr *, |
struct in6_addr **)); |
struct inpcb * |
in6_pcblookup_local __P((struct inpcbinfo *, |
struct in6_addr *, u_int, int)); |
struct inpcb * |
in6_pcblookup_hash __P((struct inpcbinfo *, |
struct in6_addr *, u_int, struct in6_addr *, |
u_int, int, struct ifnet *)); |
void in6_pcbnotify __P((struct inpcbhead *, struct sockaddr *, |
u_int, const struct sockaddr *, u_int, int, |
struct inpcb *(*)(struct inpcb *, int))); |
struct inpcb * |
in6_rtchange __P((struct inpcb *, int)); |
int in6_setpeeraddr __P((struct socket *so, struct sockaddr **nam)); |
int in6_setsockaddr __P((struct socket *so, struct sockaddr **nam)); |
int in6_mapped_sockaddr __P((struct socket *so, struct sockaddr **nam)); |
int in6_mapped_peeraddr __P((struct socket *so, struct sockaddr **nam)); |
struct in6_addr *in6_selectsrc __P((struct sockaddr_in6 *, |
struct ip6_pktopts *, |
struct ip6_moptions *, |
struct route_in6 *, |
struct in6_addr *, int *)); |
int in6_selecthlim __P((struct in6pcb *, struct ifnet *)); |
int in6_pcbsetport __P((struct in6_addr *, struct inpcb *, struct thread *)); |
void init_sin6 __P((struct sockaddr_in6 *sin6, struct mbuf *m)); |
#endif /* _KERNEL */ |
#endif /* !_NETINET6_IN6_PCB_H_ */ |
//pkgnet/tags/20230208/watt32/inc/netinet6/in6_pref.h |
---|
0,0 → 1,95 |
/*!\file netinet6/in6_pref.h |
* |
*/ |
/* $FreeBSD: src/sys/netinet6/in6_prefix.h,v 1.5 2001/06/11 12:39:05 ume Exp $ */ |
/* $KAME: in6_prefix.h,v 1.10 2001/02/08 16:30:30 itojun Exp $ */ |
/* |
* Copyright (C) 1995, 1996, 1997, 1998 and 1999 WIDE Project. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. Neither the name of the project nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
*/ |
#include <sys/callout.h> |
struct rr_prefix { |
struct ifprefix rp_ifpr; |
LIST_ENTRY(rr_prefix) rp_entry; |
LIST_HEAD(rp_addrhead, rp_addr) rp_addrhead; |
struct sockaddr_in6 rp_prefix; /* prefix */ |
u_int32_t rp_vltime; /* advertised valid lifetime */ |
u_int32_t rp_pltime; /* advertised preferred lifetime */ |
time_t rp_expire; /* expiration time of the prefix */ |
time_t rp_preferred; /* preferred time of the prefix */ |
struct in6_prflags rp_flags; |
u_char rp_origin; /* from where this prefix info is obtained */ |
struct rp_stateflags { |
/* if some prefix should be added to this prefix */ |
u_char addmark : 1; |
u_char delmark : 1; /* if this prefix will be deleted */ |
} rp_stateflags; |
}; |
#define rp_type rp_ifpr.ifpr_type |
#define rp_ifp rp_ifpr.ifpr_ifp |
#define rp_plen rp_ifpr.ifpr_plen |
#define rp_raf rp_flags.prf_ra |
#define rp_raf_onlink rp_flags.prf_ra.onlink |
#define rp_raf_auto rp_flags.prf_ra.autonomous |
#define rp_statef_addmark rp_stateflags.addmark |
#define rp_statef_delmark rp_stateflags.delmark |
#define rp_rrf rp_flags.prf_rr |
#define rp_rrf_decrvalid rp_flags.prf_rr.decrvalid |
#define rp_rrf_decrprefd rp_flags.prf_rr.decrprefd |
struct rp_addr { |
LIST_ENTRY(rp_addr) ra_entry; |
struct in6_addr ra_ifid; |
struct in6_ifaddr *ra_addr; |
struct ra_flags { |
u_char anycast : 1; |
} ra_flags; |
}; |
#define ifpr2rp(ifpr) ((struct rr_prefix *)(ifpr)) |
#define rp2ifpr(rp) ((struct ifprefix *)(rp)) |
#define RP_IN6(rp) (&(rp)->rp_prefix.sin6_addr) |
#define RR_INFINITE_LIFETIME 0xffffffff |
LIST_HEAD(rr_prhead, rr_prefix); |
extern struct rr_prhead rr_prefix; |
void in6_rr_timer __P((void *)); |
extern struct callout in6_rr_timer_ch; |
int delete_each_prefix __P((struct rr_prefix *rpp, u_char origin)); |
//pkgnet/tags/20230208/watt32/inc/netinet6/in6_var.h |
---|
0,0 → 1,612 |
/*!\file netinet6/in6_var.h |
* |
*/ |
/* $FreeBSD: src/sys/netinet6/in6_var.h,v 1.10 2002/04/19 04:46:22 suz Exp $ */ |
/* $KAME: in6_var.h,v 1.56 2001/03/29 05:34:31 itojun Exp $ */ |
/* |
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. Neither the name of the project nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
*/ |
/* |
* Copyright (c) 1985, 1986, 1993 |
* The Regents of the University of California. All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. All advertising materials mentioning features or use of this software |
* must display the following acknowledgement: |
* This product includes software developed by the University of |
* California, Berkeley and its contributors. |
* 4. Neither the name of the University nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
* |
* @(#)in_var.h 8.1 (Berkeley) 6/10/93 |
*/ |
#ifndef _NETINET6_IN6_VAR_H_ |
#define _NETINET6_IN6_VAR_H_ |
/* |
* Interface address, Internet version. One of these structures |
* is allocated for each interface with an Internet address. |
* The ifaddr structure contains the protocol-independent part |
* of the structure and is assumed to be first. |
*/ |
/* |
* pltime/vltime are just for future reference (required to implements 2 |
* hour rule for hosts). they should never be modified by nd6_timeout or |
* anywhere else. |
* userland -> kernel: accept pltime/vltime |
* kernel -> userland: throw up everything |
* in kernel: modify preferred/expire only |
*/ |
struct in6_addrlifetime { |
time_t ia6t_expire; /* valid lifetime expiration time */ |
time_t ia6t_preferred; /* preferred lifetime expiration time */ |
u_int32_t ia6t_vltime; /* valid lifetime */ |
u_int32_t ia6t_pltime; /* prefix lifetime */ |
}; |
struct in6_ifaddr { |
struct ifaddr ia_ifa; /* protocol-independent info */ |
#define ia_ifp ia_ifa.ifa_ifp |
#define ia_flags ia_ifa.ifa_flags |
struct sockaddr_in6 ia_addr; /* interface address */ |
struct sockaddr_in6 ia_net; /* network number of interface */ |
struct sockaddr_in6 ia_dstaddr; /* space for destination addr */ |
struct sockaddr_in6 ia_prefixmask; /* prefix mask */ |
u_int32_t ia_plen; /* prefix length */ |
struct in6_ifaddr *ia_next; /* next in6 list of IP6 addresses */ |
int ia6_flags; |
struct in6_addrlifetime ia6_lifetime; |
struct ifprefix *ia6_ifpr; /* back pointer to ifprefix */ |
struct nd_prefix *ia6_ndpr; /* back pointer to the ND prefix |
* (for autoconfigured addresses only) |
*/ |
}; |
/* |
* IPv6 interface statistics, as defined in RFC2465 Ipv6IfStatsEntry (p12). |
*/ |
struct in6_ifstat { |
u_quad_t ifs6_in_receive; /* # of total input datagram */ |
u_quad_t ifs6_in_hdrerr; /* # of datagrams with invalid hdr */ |
u_quad_t ifs6_in_toobig; /* # of datagrams exceeded MTU */ |
u_quad_t ifs6_in_noroute; /* # of datagrams with no route */ |
u_quad_t ifs6_in_addrerr; /* # of datagrams with invalid dst */ |
u_quad_t ifs6_in_protounknown; /* # of datagrams with unknown proto */ |
/* NOTE: increment on final dst if */ |
u_quad_t ifs6_in_truncated; /* # of truncated datagrams */ |
u_quad_t ifs6_in_discard; /* # of discarded datagrams */ |
/* NOTE: fragment timeout is not here */ |
u_quad_t ifs6_in_deliver; /* # of datagrams delivered to ULP */ |
/* NOTE: increment on final dst if */ |
u_quad_t ifs6_out_forward; /* # of datagrams forwarded */ |
/* NOTE: increment on outgoing if */ |
u_quad_t ifs6_out_request; /* # of outgoing datagrams from ULP */ |
/* NOTE: does not include forwrads */ |
u_quad_t ifs6_out_discard; /* # of discarded datagrams */ |
u_quad_t ifs6_out_fragok; /* # of datagrams fragmented */ |
u_quad_t ifs6_out_fragfail; /* # of datagrams failed on fragment */ |
u_quad_t ifs6_out_fragcreat; /* # of fragment datagrams */ |
/* NOTE: this is # after fragment */ |
u_quad_t ifs6_reass_reqd; /* # of incoming fragmented packets */ |
/* NOTE: increment on final dst if */ |
u_quad_t ifs6_reass_ok; /* # of reassembled packets */ |
/* NOTE: this is # after reass */ |
/* NOTE: increment on final dst if */ |
u_quad_t ifs6_reass_fail; /* # of reass failures */ |
/* NOTE: may not be packet count */ |
/* NOTE: increment on final dst if */ |
u_quad_t ifs6_in_mcast; /* # of inbound multicast datagrams */ |
u_quad_t ifs6_out_mcast; /* # of outbound multicast datagrams */ |
}; |
/* |
* ICMPv6 interface statistics, as defined in RFC2466 Ipv6IfIcmpEntry. |
* XXX: I'm not sure if this file is the right place for this structure... |
*/ |
struct icmp6_ifstat { |
/* |
* Input statistics |
*/ |
/* ipv6IfIcmpInMsgs, total # of input messages */ |
u_quad_t ifs6_in_msg; |
/* ipv6IfIcmpInErrors, # of input error messages */ |
u_quad_t ifs6_in_error; |
/* ipv6IfIcmpInDestUnreachs, # of input dest unreach errors */ |
u_quad_t ifs6_in_dstunreach; |
/* ipv6IfIcmpInAdminProhibs, # of input administratively prohibited errs */ |
u_quad_t ifs6_in_adminprohib; |
/* ipv6IfIcmpInTimeExcds, # of input time exceeded errors */ |
u_quad_t ifs6_in_timeexceed; |
/* ipv6IfIcmpInParmProblems, # of input parameter problem errors */ |
u_quad_t ifs6_in_paramprob; |
/* ipv6IfIcmpInPktTooBigs, # of input packet too big errors */ |
u_quad_t ifs6_in_pkttoobig; |
/* ipv6IfIcmpInEchos, # of input echo requests */ |
u_quad_t ifs6_in_echo; |
/* ipv6IfIcmpInEchoReplies, # of input echo replies */ |
u_quad_t ifs6_in_echoreply; |
/* ipv6IfIcmpInRouterSolicits, # of input router solicitations */ |
u_quad_t ifs6_in_routersolicit; |
/* ipv6IfIcmpInRouterAdvertisements, # of input router advertisements */ |
u_quad_t ifs6_in_routeradvert; |
/* ipv6IfIcmpInNeighborSolicits, # of input neighbor solicitations */ |
u_quad_t ifs6_in_neighborsolicit; |
/* ipv6IfIcmpInNeighborAdvertisements, # of input neighbor advertisements */ |
u_quad_t ifs6_in_neighboradvert; |
/* ipv6IfIcmpInRedirects, # of input redirects */ |
u_quad_t ifs6_in_redirect; |
/* ipv6IfIcmpInGroupMembQueries, # of input MLD queries */ |
u_quad_t ifs6_in_mldquery; |
/* ipv6IfIcmpInGroupMembResponses, # of input MLD reports */ |
u_quad_t ifs6_in_mldreport; |
/* ipv6IfIcmpInGroupMembReductions, # of input MLD done */ |
u_quad_t ifs6_in_mlddone; |
/* |
* Output statistics. We should solve unresolved routing problem... |
*/ |
/* ipv6IfIcmpOutMsgs, total # of output messages */ |
u_quad_t ifs6_out_msg; |
/* ipv6IfIcmpOutErrors, # of output error messages */ |
u_quad_t ifs6_out_error; |
/* ipv6IfIcmpOutDestUnreachs, # of output dest unreach errors */ |
u_quad_t ifs6_out_dstunreach; |
/* ipv6IfIcmpOutAdminProhibs, # of output administratively prohibited errs */ |
u_quad_t ifs6_out_adminprohib; |
/* ipv6IfIcmpOutTimeExcds, # of output time exceeded errors */ |
u_quad_t ifs6_out_timeexceed; |
/* ipv6IfIcmpOutParmProblems, # of output parameter problem errors */ |
u_quad_t ifs6_out_paramprob; |
/* ipv6IfIcmpOutPktTooBigs, # of output packet too big errors */ |
u_quad_t ifs6_out_pkttoobig; |
/* ipv6IfIcmpOutEchos, # of output echo requests */ |
u_quad_t ifs6_out_echo; |
/* ipv6IfIcmpOutEchoReplies, # of output echo replies */ |
u_quad_t ifs6_out_echoreply; |
/* ipv6IfIcmpOutRouterSolicits, # of output router solicitations */ |
u_quad_t ifs6_out_routersolicit; |
/* ipv6IfIcmpOutRouterAdvertisements, # of output router advertisements */ |
u_quad_t ifs6_out_routeradvert; |
/* ipv6IfIcmpOutNeighborSolicits, # of output neighbor solicitations */ |
u_quad_t ifs6_out_neighborsolicit; |
/* ipv6IfIcmpOutNeighborAdvertisements, # of output neighbor advertisements */ |
u_quad_t ifs6_out_neighboradvert; |
/* ipv6IfIcmpOutRedirects, # of output redirects */ |
u_quad_t ifs6_out_redirect; |
/* ipv6IfIcmpOutGroupMembQueries, # of output MLD queries */ |
u_quad_t ifs6_out_mldquery; |
/* ipv6IfIcmpOutGroupMembResponses, # of output MLD reports */ |
u_quad_t ifs6_out_mldreport; |
/* ipv6IfIcmpOutGroupMembReductions, # of output MLD done */ |
u_quad_t ifs6_out_mlddone; |
}; |
struct in6_ifreq { |
char ifr_name[IFNAMSIZ]; |
union { |
struct sockaddr_in6 ifru_addr; |
struct sockaddr_in6 ifru_dstaddr; |
short ifru_flags; |
int ifru_flags6; |
int ifru_metric; |
caddr_t ifru_data; |
struct in6_addrlifetime ifru_lifetime; |
struct in6_ifstat ifru_stat; |
struct icmp6_ifstat ifru_icmp6stat; |
u_int32_t ifru_scope_id[16]; |
} ifr_ifru; |
}; |
struct in6_aliasreq { |
char ifra_name[IFNAMSIZ]; |
struct sockaddr_in6 ifra_addr; |
struct sockaddr_in6 ifra_dstaddr; |
struct sockaddr_in6 ifra_prefixmask; |
int ifra_flags; |
struct in6_addrlifetime ifra_lifetime; |
}; |
/* prefix type macro */ |
#define IN6_PREFIX_ND 1 |
#define IN6_PREFIX_RR 2 |
/* |
* prefix related flags passed between kernel(NDP related part) and |
* user land command(ifconfig) and daemon(rtadvd). |
*/ |
struct in6_prflags { |
struct prf_ra { |
u_char onlink : 1; |
u_char autonomous : 1; |
u_char reserved : 6; |
} prf_ra; |
u_char prf_reserved1; |
u_short prf_reserved2; |
/* want to put this on 4byte offset */ |
struct prf_rr { |
u_char decrvalid : 1; |
u_char decrprefd : 1; |
u_char reserved : 6; |
} prf_rr; |
u_char prf_reserved3; |
u_short prf_reserved4; |
}; |
struct in6_prefixreq { |
char ipr_name[IFNAMSIZ]; |
u_char ipr_origin; |
u_char ipr_plen; |
u_int32_t ipr_vltime; |
u_int32_t ipr_pltime; |
struct in6_prflags ipr_flags; |
struct sockaddr_in6 ipr_prefix; |
}; |
#define PR_ORIG_RA 0 |
#define PR_ORIG_RR 1 |
#define PR_ORIG_STATIC 2 |
#define PR_ORIG_KERNEL 3 |
#define ipr_raf_onlink ipr_flags.prf_ra.onlink |
#define ipr_raf_auto ipr_flags.prf_ra.autonomous |
#define ipr_statef_onlink ipr_flags.prf_state.onlink |
#define ipr_rrf_decrvalid ipr_flags.prf_rr.decrvalid |
#define ipr_rrf_decrprefd ipr_flags.prf_rr.decrprefd |
struct in6_rrenumreq { |
char irr_name[IFNAMSIZ]; |
u_char irr_origin; |
u_char irr_m_len; /* match len for matchprefix */ |
u_char irr_m_minlen; /* minlen for matching prefix */ |
u_char irr_m_maxlen; /* maxlen for matching prefix */ |
u_char irr_u_uselen; /* uselen for adding prefix */ |
u_char irr_u_keeplen; /* keeplen from matching prefix */ |
struct irr_raflagmask { |
u_char onlink : 1; |
u_char autonomous : 1; |
u_char reserved : 6; |
} irr_raflagmask; |
u_int32_t irr_vltime; |
u_int32_t irr_pltime; |
struct in6_prflags irr_flags; |
struct sockaddr_in6 irr_matchprefix; |
struct sockaddr_in6 irr_useprefix; |
}; |
#define irr_raf_mask_onlink irr_raflagmask.onlink |
#define irr_raf_mask_auto irr_raflagmask.autonomous |
#define irr_raf_mask_reserved irr_raflagmask.reserved |
#define irr_raf_onlink irr_flags.prf_ra.onlink |
#define irr_raf_auto irr_flags.prf_ra.autonomous |
#define irr_statef_onlink irr_flags.prf_state.onlink |
#define irr_rrf irr_flags.prf_rr |
#define irr_rrf_decrvalid irr_flags.prf_rr.decrvalid |
#define irr_rrf_decrprefd irr_flags.prf_rr.decrprefd |
/* |
* Given a pointer to an in6_ifaddr (ifaddr), |
* return a pointer to the addr as a sockaddr_in6 |
*/ |
#define IA6_IN6(ia) (&((ia)->ia_addr.sin6_addr)) |
#define IA6_DSTIN6(ia) (&((ia)->ia_dstaddr.sin6_addr)) |
#define IA6_MASKIN6(ia) (&((ia)->ia_prefixmask.sin6_addr)) |
#define IA6_SIN6(ia) (&((ia)->ia_addr)) |
#define IA6_DSTSIN6(ia) (&((ia)->ia_dstaddr)) |
#define IFA_IN6(x) (&((struct sockaddr_in6 *)((x)->ifa_addr))->sin6_addr) |
#define IFA_DSTIN6(x) (&((struct sockaddr_in6 *)((x)->ifa_dstaddr))->sin6_addr) |
#define IFPR_IN6(x) (&((struct sockaddr_in6 *)((x)->ifpr_prefix))->sin6_addr) |
#ifdef _KERNEL |
#define IN6_ARE_MASKED_ADDR_EQUAL(d, a, m) ( \ |
(((d)->s6_addr32[0] ^ (a)->s6_addr32[0]) & (m)->s6_addr32[0]) == 0 && \ |
(((d)->s6_addr32[1] ^ (a)->s6_addr32[1]) & (m)->s6_addr32[1]) == 0 && \ |
(((d)->s6_addr32[2] ^ (a)->s6_addr32[2]) & (m)->s6_addr32[2]) == 0 && \ |
(((d)->s6_addr32[3] ^ (a)->s6_addr32[3]) & (m)->s6_addr32[3]) == 0 ) |
#endif |
#define SIOCSIFADDR_IN6 _IOW('i', 12, struct in6_ifreq) |
#define SIOCGIFADDR_IN6 _IOWR('i', 33, struct in6_ifreq) |
#ifdef _KERNEL |
/* |
* SIOCSxxx ioctls should be unused (see comments in in6.c), but |
* we do not shift numbers for binary compatibility. |
*/ |
#define SIOCSIFDSTADDR_IN6 _IOW('i', 14, struct in6_ifreq) |
#define SIOCSIFNETMASK_IN6 _IOW('i', 22, struct in6_ifreq) |
#endif |
#define SIOCGIFDSTADDR_IN6 _IOWR('i', 34, struct in6_ifreq) |
#define SIOCGIFNETMASK_IN6 _IOWR('i', 37, struct in6_ifreq) |
#define SIOCDIFADDR_IN6 _IOW('i', 25, struct in6_ifreq) |
#define SIOCAIFADDR_IN6 _IOW('i', 26, struct in6_aliasreq) |
#define SIOCSIFPHYADDR_IN6 _IOW('i', 70, struct in6_aliasreq) |
#define SIOCGIFPSRCADDR_IN6 _IOWR('i', 71, struct in6_ifreq) |
#define SIOCGIFPDSTADDR_IN6 _IOWR('i', 72, struct in6_ifreq) |
#define SIOCGIFAFLAG_IN6 _IOWR('i', 73, struct in6_ifreq) |
#define SIOCGDRLST_IN6 _IOWR('i', 74, struct in6_drlist) |
#define SIOCGPRLST_IN6 _IOWR('i', 75, struct in6_prlist) |
#ifdef _KERNEL |
#define OSIOCGIFINFO_IN6 _IOWR('i', 76, struct in6_ondireq) |
#endif |
#define SIOCGIFINFO_IN6 _IOWR('i', 108, struct in6_ndireq) |
#define SIOCSNDFLUSH_IN6 _IOWR('i', 77, struct in6_ifreq) |
#define SIOCGNBRINFO_IN6 _IOWR('i', 78, struct in6_nbrinfo) |
#define SIOCSPFXFLUSH_IN6 _IOWR('i', 79, struct in6_ifreq) |
#define SIOCSRTRFLUSH_IN6 _IOWR('i', 80, struct in6_ifreq) |
#define SIOCGIFALIFETIME_IN6 _IOWR('i', 81, struct in6_ifreq) |
#define SIOCSIFALIFETIME_IN6 _IOWR('i', 82, struct in6_ifreq) |
#define SIOCGIFSTAT_IN6 _IOWR('i', 83, struct in6_ifreq) |
#define SIOCGIFSTAT_ICMP6 _IOWR('i', 84, struct in6_ifreq) |
#define SIOCSDEFIFACE_IN6 _IOWR('i', 85, struct in6_ndifreq) |
#define SIOCGDEFIFACE_IN6 _IOWR('i', 86, struct in6_ndifreq) |
#define SIOCSIFINFO_FLAGS _IOWR('i', 87, struct in6_ndireq) /* XXX */ |
#define SIOCSSCOPE6 _IOW('i', 88, struct in6_ifreq) |
#define SIOCGSCOPE6 _IOWR('i', 89, struct in6_ifreq) |
#define SIOCGSCOPE6DEF _IOWR('i', 90, struct in6_ifreq) |
#define SIOCSIFPREFIX_IN6 _IOW('i', 100, struct in6_prefixreq) /* set */ |
#define SIOCGIFPREFIX_IN6 _IOWR('i', 101, struct in6_prefixreq) /* get */ |
#define SIOCDIFPREFIX_IN6 _IOW('i', 102, struct in6_prefixreq) /* del */ |
#define SIOCAIFPREFIX_IN6 _IOW('i', 103, struct in6_rrenumreq) /* add */ |
#define SIOCCIFPREFIX_IN6 _IOW('i', 104, \ |
struct in6_rrenumreq) /* change */ |
#define SIOCSGIFPREFIX_IN6 _IOW('i', 105, \ |
struct in6_rrenumreq) /* set global */ |
#define SIOCGETSGCNT_IN6 _IOWR('u', 106, \ |
struct sioc_sg_req6) /* get s,g pkt cnt */ |
#define SIOCGETMIFCNT_IN6 _IOWR('u', 107, \ |
struct sioc_mif_req6) /* get pkt cnt per if */ |
#define IN6_IFF_ANYCAST 0x01 /* anycast address */ |
#define IN6_IFF_TENTATIVE 0x02 /* tentative address */ |
#define IN6_IFF_DUPLICATED 0x04 /* DAD detected duplicate */ |
#define IN6_IFF_DETACHED 0x08 /* may be detached from the link */ |
#define IN6_IFF_DEPRECATED 0x10 /* deprecated address */ |
#define IN6_IFF_NODAD 0x20 /* don't perform DAD on this address |
* (used only at first SIOC* call) |
*/ |
#define IN6_IFF_AUTOCONF 0x40 /* autoconfigurable address. */ |
#define IN6_IFF_TEMPORARY 0x80 /* temporary (anonymous) address. */ |
#define IN6_IFF_NOPFX 0x8000 /* skip kernel prefix management. |
* XXX: this should be temporary. |
*/ |
/* do not input/output */ |
#define IN6_IFF_NOTREADY (IN6_IFF_TENTATIVE|IN6_IFF_DUPLICATED) |
#ifdef _KERNEL |
#define IN6_ARE_SCOPE_CMP(a,b) ((a)-(b)) |
#define IN6_ARE_SCOPE_EQUAL(a,b) ((a)==(b)) |
#endif |
#ifdef _KERNEL |
extern struct in6_ifaddr *in6_ifaddr; |
extern struct in6_ifstat **in6_ifstat; |
extern size_t in6_ifstatmax; |
extern struct icmp6stat icmp6stat; |
extern struct icmp6_ifstat **icmp6_ifstat; |
extern size_t icmp6_ifstatmax; |
#define in6_ifstat_inc(ifp, tag) \ |
do { \ |
if ((ifp) && (ifp)->if_index <= if_index \ |
&& (ifp)->if_index < in6_ifstatmax \ |
&& in6_ifstat && in6_ifstat[(ifp)->if_index]) { \ |
in6_ifstat[(ifp)->if_index]->tag++; \ |
} \ |
} while (0) |
extern struct ifqueue ip6intrq; /* IP6 packet input queue */ |
extern struct in6_addr zeroin6_addr; |
extern u_char inet6ctlerrmap[]; |
extern unsigned long in6_maxmtu; |
#ifdef MALLOC_DECLARE |
MALLOC_DECLARE(M_IPMADDR); |
#endif |
/* |
* Macro for finding the internet address structure (in6_ifaddr) corresponding |
* to a given interface (ifnet structure). |
*/ |
#define IFP_TO_IA6(ifp, ia) \ |
/* struct ifnet *ifp; */ \ |
/* struct in6_ifaddr *ia; */ \ |
do { \ |
struct ifaddr *ifa; \ |
for (ifa = (ifp)->if_addrlist.tqh_first; ifa; ifa = ifa->ifa_list.tqe_next) { \ |
if (!ifa->ifa_addr) \ |
continue; \ |
if (ifa->ifa_addr->sa_family == AF_INET6) \ |
break; \ |
} \ |
(ia) = (struct in6_ifaddr *)ifa; \ |
} while (0) |
#endif /* _KERNEL */ |
/* |
* Multi-cast membership entry. One for each group/ifp that a PCB |
* belongs to. |
*/ |
struct in6_multi_mship { |
struct in6_multi *i6mm_maddr; /* Multicast address pointer */ |
LIST_ENTRY(in6_multi_mship) i6mm_chain; /* multicast options chain */ |
}; |
struct in6_multi { |
LIST_ENTRY(in6_multi) in6m_entry; /* list glue */ |
struct in6_addr in6m_addr; /* IP6 multicast address */ |
struct ifnet *in6m_ifp; /* back pointer to ifnet */ |
struct ifmultiaddr *in6m_ifma; /* back pointer to ifmultiaddr */ |
u_int in6m_refcount; /* # membership claims by sockets */ |
u_int in6m_state; /* state of the membership */ |
u_int in6m_timer; /* MLD6 listener report timer */ |
}; |
#ifdef _KERNEL |
extern LIST_HEAD(in6_multihead, in6_multi) in6_multihead; |
/* |
* Structure used by macros below to remember position when stepping through |
* all of the in6_multi records. |
*/ |
struct in6_multistep { |
struct in6_ifaddr *i_ia; |
struct in6_multi *i_in6m; |
}; |
/* |
* Macros for looking up the in6_multi record for a given IP6 multicast |
* address on a given interface. If no matching record is found, "in6m" |
* returns NLL. |
*/ |
#define IN6_LOOKUP_MULTI(addr, ifp, in6m) \ |
/* struct in6_addr addr; */ \ |
/* struct ifnet *ifp; */ \ |
/* struct in6_multi *in6m; */ \ |
do { \ |
struct ifmultiaddr *ifma; \ |
TAILQ_FOREACH(ifma, &(ifp)->if_multiaddrs, ifma_link) { \ |
if (ifma->ifma_addr->sa_family == AF_INET6 \ |
&& IN6_ARE_ADDR_EQUAL(&((struct sockaddr_in6 *)ifma->ifma_addr)->sin6_addr, \ |
&(addr))) \ |
break; \ |
} \ |
(in6m) = (struct in6_multi *)(ifma ? ifma->ifma_protospec : 0); \ |
} while(0) |
/* |
* Macro to step through all of the in6_multi records, one at a time. |
* The current position is remembered in "step", which the caller must |
* provide. IN6_FIRST_MULTI(), below, must be called to initialize "step" |
* and get the first record. Both macros return a NULL "in6m" when there |
* are no remaining records. |
*/ |
#define IN6_NEXT_MULTI(step, in6m) \ |
/* struct in6_multistep step; */ \ |
/* struct in6_multi *in6m; */ \ |
do { \ |
if (((in6m) = (step).i_in6m) != NULL) \ |
(step).i_in6m = (step).i_in6m->in6m_entry.le_next; \ |
} while(0) |
#define IN6_FIRST_MULTI(step, in6m) \ |
/* struct in6_multistep step; */ \ |
/* struct in6_multi *in6m */ \ |
do { \ |
(step).i_in6m = in6_multihead.lh_first; \ |
IN6_NEXT_MULTI((step), (in6m)); \ |
} while(0) |
struct in6_multi *in6_addmulti __P((struct in6_addr *, struct ifnet *, |
int *)); |
void in6_delmulti __P((struct in6_multi *)); |
extern int in6_ifindex2scopeid __P((int)); |
extern int in6_mask2len __P((struct in6_addr *, u_char *)); |
extern void in6_len2mask __P((struct in6_addr *, int)); |
int in6_control __P((struct socket *, |
u_long, caddr_t, struct ifnet *, struct thread *)); |
int in6_update_ifa __P((struct ifnet *, struct in6_aliasreq *, |
struct in6_ifaddr *)); |
void in6_purgeaddr __P((struct ifaddr *)); |
int in6if_do_dad __P((struct ifnet *)); |
void in6_purgeif __P((struct ifnet *)); |
void in6_savemkludge __P((struct in6_ifaddr *)); |
void in6_setmaxmtu __P((void)); |
void in6_restoremkludge __P((struct in6_ifaddr *, struct ifnet *)); |
void in6_purgemkludge __P((struct ifnet *)); |
struct in6_ifaddr *in6ifa_ifpforlinklocal __P((struct ifnet *, int)); |
struct in6_ifaddr *in6ifa_ifpwithaddr __P((struct ifnet *, |
struct in6_addr *)); |
char *ip6_sprintf __P((const struct in6_addr *)); |
int in6_addr2scopeid __P((struct ifnet *, struct in6_addr *)); |
int in6_matchlen __P((struct in6_addr *, struct in6_addr *)); |
int in6_are_prefix_equal __P((struct in6_addr *p1, struct in6_addr *p2, |
int len)); |
void in6_prefixlen2mask __P((struct in6_addr *maskp, int len)); |
int in6_prefix_ioctl __P((struct socket *so, u_long cmd, caddr_t data, |
struct ifnet *ifp)); |
int in6_prefix_add_ifid __P((int iilen, struct in6_ifaddr *ia)); |
void in6_prefix_remove_ifid __P((int iilen, struct in6_ifaddr *ia)); |
void in6_purgeprefix __P((struct ifnet *)); |
int in6_is_addr_deprecated __P((struct sockaddr_in6 *)); |
struct inpcb; |
int in6_embedscope __P((struct in6_addr *, const struct sockaddr_in6 *, |
struct inpcb *, struct ifnet **)); |
int in6_recoverscope __P((struct sockaddr_in6 *, const struct in6_addr *, |
struct ifnet *)); |
void in6_clearscope __P((struct in6_addr *)); |
#endif /* _KERNEL */ |
#endif /* _NETINET6_IN6_VAR_H_ */ |
//pkgnet/tags/20230208/watt32/inc/netinet6/ip6.h |
---|
0,0 → 1,8 |
/*!\file netinet6/ip6.h |
* \note Obsolete. Use netinet/ip6.h. |
*/ |
/* $FreeBSD: src/sys/netinet6/ip6.h,v 1.5 2000/07/04 16:35:09 itojun Exp $ */ |
/* $KAME: ip6.h,v 1.7 2000/03/25 07:23:36 sumikawa Exp $ */ |
#error "netinet6/ip6.h is obsolete. use netinet/ip6.h" |
//pkgnet/tags/20230208/watt32/inc/netinet6/ip6_ecn.h |
---|
0,0 → 1,45 |
/*!\file netinet6/ip6_ecn.h |
* |
*/ |
/* $FreeBSD: src/sys/netinet6/ip6_ecn.h,v 1.4 2001/06/11 12:39:05 ume Exp $ */ |
/* $KAME: ip_ecn.h,v 1.5 2000/03/27 04:58:38 sumikawa Exp $ */ |
/* |
* Copyright (C) 1999 WIDE Project. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. Neither the name of the project nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
* |
*/ |
/* |
* ECN consideration on tunnel ingress/egress operation. |
* http://www.aciri.org/floyd/papers/draft-ipsec-ecn-00.txt |
*/ |
#ifdef _KERNEL |
extern void ip6_ecn_ingress __P((int, u_int32_t *, const u_int32_t *)); |
extern void ip6_ecn_egress __P((int, const u_int32_t *, u_int32_t *)); |
#endif |
//pkgnet/tags/20230208/watt32/inc/netinet6/ip6_fw.h |
---|
0,0 → 1,235 |
/*!\file netinet6/ip6_fw.h |
* |
*/ |
/* $FreeBSD: src/sys/netinet6/ip6_fw.h,v 1.12 2002/04/19 04:46:22 suz Exp $ */ |
/* $KAME: ip6_fw.h,v 1.9 2001/08/01 04:29:57 sumikawa Exp $ */ |
/* |
* Copyright (C) 1998, 1999, 2000 and 2001 WIDE Project. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. Neither the name of the project nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
*/ |
/* |
* Copyright (c) 1993 Daniel Boulet |
* Copyright (c) 1994 Ugen J.S.Antsilevich |
* |
* Redistribution and use in source forms, with and without modification, |
* are permitted provided that this entire comment appears intact. |
* |
* Redistribution in binary form may occur without any restrictions. |
* Obviously, it would be nice if you gave credit where credit is due |
* but requiring it would be too onerous. |
* |
* This software is provided ``AS IS'' without any warranties of any kind. |
* |
*/ |
#ifndef _IP6_FW_H |
#define _IP6_FW_H |
#include <net/if.h> |
/* |
* This union structure identifies an interface, either explicitly |
* by name or implicitly by IP address. The flags IP_FW_F_IIFNAME |
* and IP_FW_F_OIFNAME say how to interpret this structure. An |
* interface unit number of -1 matches any unit number, while an |
* IP address of 0.0.0.0 indicates matches any interface. |
* |
* The receive and transmit interfaces are only compared against the |
* the packet if the corresponding bit (IP_FW_F_IIFACE or IP_FW_F_OIFACE) |
* is set. Note some packets lack a receive or transmit interface |
* (in which case the missing "interface" never matches). |
*/ |
union ip6_fw_if { |
struct in6_addr fu_via_ip6; /* Specified by IPv6 address */ |
struct { /* Specified by interface name */ |
#define IP6FW_IFNLEN IFNAMSIZ |
char name[IP6FW_IFNLEN]; |
short unit; /* -1 means match any unit */ |
} fu_via_if; |
}; |
/* |
* Format of an IP firewall descriptor |
* |
* fw_src, fw_dst, fw_smsk, fw_dmsk are always stored in network byte order. |
* fw_flg and fw_n*p are stored in host byte order (of course). |
* Port numbers are stored in HOST byte order. |
* Warning: setsockopt() will fail if sizeof(struct ip_fw) > MLEN (108) |
*/ |
struct ip6_fw { |
u_long fw_pcnt,fw_bcnt; /* Packet and byte counters */ |
struct in6_addr fw_src, fw_dst; /* Source and destination IPv6 addr */ |
struct in6_addr fw_smsk, fw_dmsk; /* Mask for src and dest IPv6 addr */ |
u_short fw_number; /* Rule number */ |
u_short fw_flg; /* Flags word */ |
#define IPV6_FW_MAX_PORTS 10 /* A reasonable maximum */ |
u_int fw_ipflg; /* IP flags word */ |
u_short fw_pts[IPV6_FW_MAX_PORTS]; /* Array of port numbers to match */ |
u_char fw_ip6opt,fw_ip6nopt; /* IPv6 options set/unset */ |
u_char fw_tcpf,fw_tcpnf; /* TCP flags set/unset */ |
#define IPV6_FW_ICMPTYPES_DIM (256 / (sizeof(unsigned) * 8)) |
unsigned fw_icmp6types[IPV6_FW_ICMPTYPES_DIM]; /* ICMP types bitmap */ |
long timestamp; /* timestamp (tv_sec) of last match */ |
union ip6_fw_if fw_in_if, fw_out_if;/* Incoming and outgoing interfaces */ |
union { |
u_short fu_divert_port; /* Divert/tee port (options IP6DIVERT) */ |
u_short fu_skipto_rule; /* SKIPTO command rule number */ |
u_short fu_reject_code; /* REJECT response code */ |
} fw_un; |
u_char fw_prot; /* IPv6 protocol */ |
u_char fw_nports; /* N'of src ports and # of dst ports */ |
/* in ports array (dst ports follow */ |
/* src ports; max of 10 ports in all; */ |
/* count of 0 means match all ports) */ |
}; |
#define IPV6_FW_GETNSRCP(rule) ((rule)->fw_nports & 0x0f) |
#define IPV6_FW_SETNSRCP(rule, n) do { \ |
(rule)->fw_nports &= ~0x0f; \ |
(rule)->fw_nports |= (n); \ |
} while (0) |
#define IPV6_FW_GETNDSTP(rule) ((rule)->fw_nports >> 4) |
#define IPV6_FW_SETNDSTP(rule, n) do { \ |
(rule)->fw_nports &= ~0xf0; \ |
(rule)->fw_nports |= (n) << 4;\ |
} while (0) |
#define fw_divert_port fw_un.fu_divert_port |
#define fw_skipto_rule fw_un.fu_skipto_rule |
#define fw_reject_code fw_un.fu_reject_code |
struct ip6_fw_chain { |
LIST_ENTRY(ip6_fw_chain) chain; |
struct ip6_fw *rule; |
}; |
/* |
* Values for "flags" field . |
*/ |
#define IPV6_FW_F_IN 0x0001 /* Check inbound packets */ |
#define IPV6_FW_F_OUT 0x0002 /* Check outbound packets */ |
#define IPV6_FW_F_IIFACE 0x0004 /* Apply inbound interface test */ |
#define IPV6_FW_F_OIFACE 0x0008 /* Apply outbound interface test */ |
#define IPV6_FW_F_COMMAND 0x0070 /* Mask for type of chain entry: */ |
#define IPV6_FW_F_DENY 0x0000 /* This is a deny rule */ |
#define IPV6_FW_F_REJECT 0x0010 /* Deny and send a response packet */ |
#define IPV6_FW_F_ACCEPT 0x0020 /* This is an accept rule */ |
#define IPV6_FW_F_COUNT 0x0030 /* This is a count rule */ |
#define IPV6_FW_F_DIVERT 0x0040 /* This is a divert rule */ |
#define IPV6_FW_F_TEE 0x0050 /* This is a tee rule */ |
#define IPV6_FW_F_SKIPTO 0x0060 /* This is a skipto rule */ |
#define IPV6_FW_F_PRN 0x0080 /* Print if this rule matches */ |
#define IPV6_FW_F_SRNG 0x0100 /* The first two src ports are a min * |
* and max range (stored in host byte * |
* order). */ |
#define IPV6_FW_F_DRNG 0x0200 /* The first two dst ports are a min * |
* and max range (stored in host byte * |
* order). */ |
#define IPV6_FW_F_IIFNAME 0x0400 /* In interface by name/unit (not IP) */ |
#define IPV6_FW_F_OIFNAME 0x0800 /* Out interface by name/unit (not IP) */ |
#define IPV6_FW_F_INVSRC 0x1000 /* Invert sense of src check */ |
#define IPV6_FW_F_INVDST 0x2000 /* Invert sense of dst check */ |
#define IPV6_FW_F_FRAG 0x4000 /* Fragment */ |
#define IPV6_FW_F_ICMPBIT 0x8000 /* ICMP type bitmap is valid */ |
#define IPV6_FW_F_MASK 0xFFFF /* All possible flag bits mask */ |
/* |
* Flags for the 'fw_ipflg' field, for comparing values of ip and its protocols. */ |
#define IPV6_FW_IF_TCPEST 0x00000020 /* established TCP connection */ |
#define IPV6_FW_IF_TCPMSK 0x00000020 /* mask of all TCP values */ |
/* |
* For backwards compatibility with rules specifying "via iface" but |
* not restricted to only "in" or "out" packets, we define this combination |
* of bits to represent this configuration. |
*/ |
#define IF6_FW_F_VIAHACK (IPV6_FW_F_IN|IPV6_FW_F_OUT|IPV6_FW_F_IIFACE|IPV6_FW_F_OIFACE) |
/* |
* Definitions for REJECT response codes. |
* Values less than 256 correspond to ICMP unreachable codes. |
*/ |
#define IPV6_FW_REJECT_RST 0x0100 /* TCP packets: send RST */ |
/* |
* Definitions for IPv6 option names. |
*/ |
#define IPV6_FW_IP6OPT_HOPOPT 0x01 |
#define IPV6_FW_IP6OPT_ROUTE 0x02 |
#define IPV6_FW_IP6OPT_FRAG 0x04 |
#define IPV6_FW_IP6OPT_ESP 0x08 |
#define IPV6_FW_IP6OPT_AH 0x10 |
#define IPV6_FW_IP6OPT_NONXT 0x20 |
#define IPV6_FW_IP6OPT_OPTS 0x40 |
/* |
* Definitions for TCP flags. |
*/ |
#define IPV6_FW_TCPF_FIN TH_FIN |
#define IPV6_FW_TCPF_SYN TH_SYN |
#define IPV6_FW_TCPF_RST TH_RST |
#define IPV6_FW_TCPF_PSH TH_PUSH |
#define IPV6_FW_TCPF_ACK TH_ACK |
#define IPV6_FW_TCPF_URG TH_URG |
/* |
* Main firewall chains definitions and global var's definitions. |
*/ |
#ifdef _KERNEL |
/* |
* Function definitions. |
*/ |
void ip6_fw_init(void); |
/* Firewall hooks */ |
struct ip6_hdr; |
typedef int ip6_fw_chk_t __P((struct ip6_hdr**, struct ifnet*, |
u_short *, struct mbuf**)); |
typedef int ip6_fw_ctl_t __P((int, struct mbuf**)); |
extern ip6_fw_chk_t *ip6_fw_chk_ptr; |
extern ip6_fw_ctl_t *ip6_fw_ctl_ptr; |
extern int ip6_fw_enable; |
#endif /* _KERNEL */ |
#endif /* _IP6_FW_H */ |
//pkgnet/tags/20230208/watt32/inc/netinet6/ip6_mrou.h |
---|
0,0 → 1,281 |
/*!\file netinet6/ip6_mrou.h |
* |
*/ |
/* $FreeBSD: src/sys/netinet6/ip6_mroute.h,v 1.5 2002/04/19 04:46:23 suz Exp $ */ |
/* $KAME: ip6_mroute.h,v 1.19 2001/06/14 06:12:55 suz Exp $ */ |
/* |
* Copyright (C) 1998 WIDE Project. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. Neither the name of the project nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
*/ |
/* BSDI ip_mroute.h,v 2.5 1996/10/11 16:01:48 pjd Exp */ |
/* |
* Definitions for IP multicast forwarding. |
* |
* Written by David Waitzman, BBN Labs, August 1988. |
* Modified by Steve Deering, Stanford, February 1989. |
* Modified by Ajit Thyagarajan, PARC, August 1993. |
* Modified by Ajit Thyagarajan, PARC, August 1994. |
* Modified by Ahmed Helmy, USC, September 1996. |
* |
* MROUTING Revision: 1.2 |
*/ |
#ifndef _NETINET6_IP6_MROUTE_H_ |
#define _NETINET6_IP6_MROUTE_H_ |
/* |
* Multicast Routing set/getsockopt commands. |
*/ |
#ifdef _KERNEL |
#define MRT6_OINIT 100 /* initialize forwarder (omrt6msg) */ |
#endif |
#define MRT6_DONE 101 /* shut down forwarder */ |
#define MRT6_ADD_MIF 102 /* add multicast interface */ |
#define MRT6_DEL_MIF 103 /* delete multicast interface */ |
#define MRT6_ADD_MFC 104 /* insert forwarding cache entry */ |
#define MRT6_DEL_MFC 105 /* delete forwarding cache entry */ |
#define MRT6_PIM 107 /* enable pim code */ |
#define MRT6_INIT 108 /* initialize forwarder (mrt6msg) */ |
#if BSD >= 199103 |
#define GET_TIME(t) microtime(&t) |
#elif defined(sun) |
#define GET_TIME(t) uniqtime(&t) |
#else |
#define GET_TIME(t) ((t) = time) |
#endif |
/* |
* Types and macros for handling bitmaps with one bit per multicast interface. |
*/ |
typedef u_short mifi_t; /* type of a mif index */ |
#define MAXMIFS 64 |
#ifndef IF_SETSIZE |
#define IF_SETSIZE 256 |
#endif |
typedef u_int32_t if_mask; |
#define NIFBITS (sizeof(if_mask) * NBBY) /* bits per mask */ |
#ifndef howmany |
#define howmany(x, y) (((x) + ((y) - 1)) / (y)) |
#endif |
typedef struct if_set { |
if_mask ifs_bits[howmany(IF_SETSIZE, NIFBITS)]; |
} if_set; |
#define IF_SET(n, p) ((p)->ifs_bits[(n)/NIFBITS] |= (1 << ((n) % NIFBITS))) |
#define IF_CLR(n, p) ((p)->ifs_bits[(n)/NIFBITS] &= ~(1 << ((n) % NIFBITS))) |
#define IF_ISSET(n, p) ((p)->ifs_bits[(n)/NIFBITS] & (1 << ((n) % NIFBITS))) |
#define IF_COPY(f, t) bcopy(f, t, sizeof(*(f))) |
#define IF_ZERO(p) bzero(p, sizeof(*(p))) |
/* |
* Argument structure for MRT6_ADD_IF. |
*/ |
struct mif6ctl { |
mifi_t mif6c_mifi; /* the index of the mif to be added */ |
u_char mif6c_flags; /* MIFF_ flags defined below */ |
u_short mif6c_pifi; /* the index of the physical IF */ |
#ifdef notyet |
u_int mif6c_rate_limit; /* max rate */ |
#endif |
}; |
#define MIFF_REGISTER 0x1 /* mif represents a register end-point */ |
/* |
* Argument structure for MRT6_ADD_MFC and MRT6_DEL_MFC |
*/ |
struct mf6cctl { |
struct sockaddr_in6 mf6cc_origin; /* IPv6 origin of mcasts */ |
struct sockaddr_in6 mf6cc_mcastgrp; /* multicast group associated */ |
mifi_t mf6cc_parent; /* incoming ifindex */ |
struct if_set mf6cc_ifset; /* set of forwarding ifs */ |
}; |
/* |
* The kernel's multicast routing statistics. |
*/ |
struct mrt6stat { |
u_quad_t mrt6s_mfc_lookups; /* # forw. cache hash table hits */ |
u_quad_t mrt6s_mfc_misses; /* # forw. cache hash table misses */ |
u_quad_t mrt6s_upcalls; /* # calls to mrouted */ |
u_quad_t mrt6s_no_route; /* no route for packet's origin */ |
u_quad_t mrt6s_bad_tunnel; /* malformed tunnel options */ |
u_quad_t mrt6s_cant_tunnel; /* no room for tunnel options */ |
u_quad_t mrt6s_wrong_if; /* arrived on wrong interface */ |
u_quad_t mrt6s_upq_ovflw; /* upcall Q overflow */ |
u_quad_t mrt6s_cache_cleanups; /* # entries with no upcalls */ |
u_quad_t mrt6s_drop_sel; /* pkts dropped selectively */ |
u_quad_t mrt6s_q_overflow; /* pkts dropped - Q overflow */ |
u_quad_t mrt6s_pkt2large; /* pkts dropped - size > BKT SIZE */ |
u_quad_t mrt6s_upq_sockfull; /* upcalls dropped - socket full */ |
}; |
#ifdef MRT6_OINIT |
/* |
* Struct used to communicate from kernel to multicast router |
* note the convenient similarity to an IPv6 header. |
* XXX old version, superseded by mrt6msg. |
*/ |
struct omrt6msg { |
u_long unused1; |
u_char im6_msgtype; /* what type of message */ |
#if 0 |
#define MRT6MSG_NOCACHE 1 |
#define MRT6MSG_WRONGMIF 2 |
#define MRT6MSG_WHOLEPKT 3 /* used for user level encap*/ |
#endif |
u_char im6_mbz; /* must be zero */ |
u_char im6_mif; /* mif rec'd on */ |
u_char unused2; |
struct in6_addr im6_src, im6_dst; |
}; |
#endif |
/* |
* Structure used to communicate from kernel to multicast router. |
* We'll overlay the structure onto an MLD header (not an IPv6 header |
* like igmpmsg{} used for IPv4 implementation). This is because this |
* structure will be passed via an IPv6 raw socket, on which an application |
* will only receive the payload i.e. the data after the IPv6 header and all |
* the extension headers. (see Section 3 of draft-ietf-ipngwg-2292bis-01) |
*/ |
struct mrt6msg { |
#define MRT6MSG_NOCACHE 1 |
#define MRT6MSG_WRONGMIF 2 |
#define MRT6MSG_WHOLEPKT 3 /* used for user level encap*/ |
u_char im6_mbz; /* must be zero */ |
u_char im6_msgtype; /* what type of message */ |
u_int16_t im6_mif; /* mif rec'd on */ |
u_int32_t im6_pad; /* padding for 64bit arch */ |
struct in6_addr im6_src, im6_dst; |
}; |
/* |
* Argument structure used by multicast routing daemon to get src-grp |
* packet counts |
*/ |
struct sioc_sg_req6 { |
struct sockaddr_in6 src; |
struct sockaddr_in6 grp; |
u_quad_t pktcnt; |
u_quad_t bytecnt; |
u_quad_t wrong_if; |
}; |
/* |
* Argument structure used by mrouted to get mif pkt counts |
*/ |
struct sioc_mif_req6 { |
mifi_t mifi; /* mif number */ |
u_quad_t icount; /* Input packet count on mif */ |
u_quad_t ocount; /* Output packet count on mif */ |
u_quad_t ibytes; /* Input byte count on mif */ |
u_quad_t obytes; /* Output byte count on mif */ |
}; |
#if defined(_KERNEL) || defined(KERNEL) |
/* |
* The kernel's multicast-interface structure. |
*/ |
struct mif6 { |
u_char m6_flags; /* MIFF_ flags defined above */ |
u_int m6_rate_limit; /* max rate */ |
#ifdef notyet |
struct tbf *m6_tbf; /* token bucket structure at intf. */ |
#endif |
struct in6_addr m6_lcl_addr; /* local interface address */ |
struct ifnet *m6_ifp; /* pointer to interface */ |
u_quad_t m6_pkt_in; /* # pkts in on interface */ |
u_quad_t m6_pkt_out; /* # pkts out on interface */ |
u_quad_t m6_bytes_in; /* # bytes in on interface */ |
u_quad_t m6_bytes_out; /* # bytes out on interface */ |
struct route_in6 m6_route;/* cached route if this is a tunnel */ |
#ifdef notyet |
u_int m6_rsvp_on; /* RSVP listening on this vif */ |
struct socket *m6_rsvpd; /* RSVP daemon socket */ |
#endif |
}; |
/* |
* The kernel's multicast forwarding cache entry structure |
*/ |
struct mf6c { |
struct sockaddr_in6 mf6c_origin; /* IPv6 origin of mcasts */ |
struct sockaddr_in6 mf6c_mcastgrp; /* multicast group associated*/ |
mifi_t mf6c_parent; /* incoming IF */ |
struct if_set mf6c_ifset; /* set of outgoing IFs */ |
u_quad_t mf6c_pkt_cnt; /* pkt count for src-grp */ |
u_quad_t mf6c_byte_cnt; /* byte count for src-grp */ |
u_quad_t mf6c_wrong_if; /* wrong if for src-grp */ |
int mf6c_expire; /* time to clean entry up */ |
struct timeval mf6c_last_assert; /* last time I sent an assert*/ |
struct rtdetq *mf6c_stall; /* pkts waiting for route */ |
struct mf6c *mf6c_next; /* hash table linkage */ |
}; |
#define MF6C_INCOMPLETE_PARENT ((mifi_t)-1) |
/* |
* Argument structure used for pkt info. while upcall is made |
*/ |
#ifndef _NETINET_IP_MROUTE_H_ |
struct rtdetq { /* XXX: rtdetq is also defined in ip_mroute.h */ |
struct mbuf *m; /* A copy of the packet */ |
struct ifnet *ifp; /* Interface pkt came in on */ |
#ifdef UPCALL_TIMING |
struct timeval t; /* Timestamp */ |
#endif /* UPCALL_TIMING */ |
struct rtdetq *next; |
}; |
#endif /* _NETINET_IP_MROUTE_H_ */ |
#define MF6CTBLSIZ 256 |
#if (MF6CTBLSIZ & (MF6CTBLSIZ - 1)) == 0 /* from sys:route.h */ |
#define MF6CHASHMOD(h) ((h) & (MF6CTBLSIZ - 1)) |
#else |
#define MF6CHASHMOD(h) ((h) % MF6CTBLSIZ) |
#endif |
#define MAX_UPQ6 4 /* max. no of pkts in upcall Q */ |
int ip6_mrouter_set __P((struct socket *so, struct sockopt *sopt)); |
int ip6_mrouter_get __P((struct socket *so, struct sockopt *sopt)); |
int ip6_mrouter_done __P((void)); |
int mrt6_ioctl __P((int, caddr_t)); |
#endif /* _KERNEL */ |
#endif /* !_NETINET6_IP6_MROUTE_H_ */ |
//pkgnet/tags/20230208/watt32/inc/netinet6/ip6_var.h |
---|
0,0 → 1,370 |
/*!\file netinet6/ip6_var.h |
* |
*/ |
/* $FreeBSD: src/sys/netinet6/ip6_var.h,v 1.9 2002/07/25 17:40:45 ume Exp $ */ |
/* $KAME: ip6_var.h,v 1.62 2001/05/03 14:51:48 itojun Exp $ */ |
/* |
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. Neither the name of the project nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
*/ |
/* |
* Copyright (c) 1982, 1986, 1993 |
* The Regents of the University of California. All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. All advertising materials mentioning features or use of this software |
* must display the following acknowledgement: |
* This product includes software developed by the University of |
* California, Berkeley and its contributors. |
* 4. Neither the name of the University nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
* |
* @(#)ip_var.h 8.1 (Berkeley) 6/10/93 |
*/ |
#ifndef _NETINET6_IP6_VAR_H_ |
#define _NETINET6_IP6_VAR_H_ |
#include <sys/queue.h> |
#if !defined(__BORLANDC__) /* stop warnings for undefined structs */ |
/* |
* IP6 reassembly queue structure. Each fragment |
* being reassembled is attached to one of these structures. |
*/ |
struct ip6q { |
u_int32_t ip6q_head; |
u_int16_t ip6q_len; |
u_int8_t ip6q_nxt; /* ip6f_nxt in first fragment */ |
u_int8_t ip6q_hlim; |
struct ip6asfrag *ip6q_down; |
struct ip6asfrag *ip6q_up; |
u_int32_t ip6q_ident; |
u_int8_t ip6q_arrive; |
u_int8_t ip6q_ttl; |
struct in6_addr ip6q_src, ip6q_dst; |
struct ip6q *ip6q_next; |
struct ip6q *ip6q_prev; |
int ip6q_unfrglen; /* len of unfragmentable part */ |
#ifdef notyet |
u_char *ip6q_nxtp; |
#endif |
}; |
struct ip6asfrag { |
u_int32_t ip6af_head; |
u_int16_t ip6af_len; |
u_int8_t ip6af_nxt; |
u_int8_t ip6af_hlim; |
/* must not override the above members during reassembling */ |
struct ip6asfrag *ip6af_down; |
struct ip6asfrag *ip6af_up; |
struct mbuf *ip6af_m; |
int ip6af_offset; /* offset in ip6af_m to next header */ |
int ip6af_frglen; /* fragmentable part length */ |
int ip6af_off; /* fragment offset */ |
u_int16_t ip6af_mff; /* more fragment bit in frag off */ |
}; |
#define IP6_REASS_MBUF(ip6af) (*(struct mbuf **)&((ip6af)->ip6af_m)) |
struct ip6_moptions { |
struct ifnet *im6o_multicast_ifp; /* ifp for outgoing multicasts */ |
u_char im6o_multicast_hlim; /* hoplimit for outgoing multicasts */ |
u_char im6o_multicast_loop; /* 1 >= hear sends if a member */ |
LIST_HEAD(dummy, in6_multi_mship) im6o_memberships; |
}; |
#endif /* __BORLANDC__ */ |
#ifndef _NETINET6_IN6_H_ |
struct route_in6 { |
struct rtentry *ro_rt; |
struct sockaddr_in6 ro_dst; |
}; |
#endif |
/* |
* Control options for outgoing packets |
*/ |
/* Routing header related info */ |
#if !defined(__BORLANDC__) |
struct ip6po_rhinfo { |
struct ip6_rthdr *ip6po_rhi_rthdr; /* Routing header */ |
struct route_in6 ip6po_rhi_route; /* Route to the 1st hop */ |
}; |
#define ip6po_rthdr ip6po_rhinfo.ip6po_rhi_rthdr |
#define ip6po_route ip6po_rhinfo.ip6po_rhi_route |
struct ip6_pktopts { |
struct mbuf *ip6po_m; /* Pointer to mbuf storing the data */ |
int ip6po_hlim; /* Hoplimit for outgoing packets */ |
/* Outgoing IF/address information */ |
struct in6_pktinfo *ip6po_pktinfo; |
struct sockaddr *ip6po_nexthop; /* Next-hop address */ |
struct ip6_hbh *ip6po_hbh; /* Hop-by-Hop options header */ |
/* Destination options header (before a routing header) */ |
struct ip6_dest *ip6po_dest1; |
/* Routing header related info. */ |
struct ip6po_rhinfo ip6po_rhinfo; |
/* Destination options header (after a routing header) */ |
struct ip6_dest *ip6po_dest2; |
}; |
#endif /* __BORLANDC__ */ |
/* |
* Control options for incoming packets |
*/ |
struct ip6stat { |
u_quad_t ip6s_total; /* total packets received */ |
u_quad_t ip6s_tooshort; /* packet too short */ |
u_quad_t ip6s_toosmall; /* not enough data */ |
u_quad_t ip6s_fragments; /* fragments received */ |
u_quad_t ip6s_fragdropped; /* frags dropped(dups, out of space) */ |
u_quad_t ip6s_fragtimeout; /* fragments timed out */ |
u_quad_t ip6s_fragoverflow; /* fragments that exceeded limit */ |
u_quad_t ip6s_forward; /* packets forwarded */ |
u_quad_t ip6s_cantforward; /* packets rcvd for unreachable dest */ |
u_quad_t ip6s_redirectsent; /* packets forwarded on same net */ |
u_quad_t ip6s_delivered; /* datagrams delivered to upper level*/ |
u_quad_t ip6s_localout; /* total ip packets generated here */ |
u_quad_t ip6s_odropped; /* lost packets due to nobufs, etc. */ |
u_quad_t ip6s_reassembled; /* total packets reassembled ok */ |
u_quad_t ip6s_fragmented; /* datagrams sucessfully fragmented */ |
u_quad_t ip6s_ofragments; /* output fragments created */ |
u_quad_t ip6s_cantfrag; /* don't fragment flag was set, etc. */ |
u_quad_t ip6s_badoptions; /* error in option processing */ |
u_quad_t ip6s_noroute; /* packets discarded due to no route */ |
u_quad_t ip6s_badvers; /* ip6 version != 6 */ |
u_quad_t ip6s_rawout; /* total raw ip packets generated */ |
u_quad_t ip6s_badscope; /* scope error */ |
u_quad_t ip6s_notmember; /* don't join this multicast group */ |
u_quad_t ip6s_nxthist[256]; /* next header history */ |
u_quad_t ip6s_m1; /* one mbuf */ |
u_quad_t ip6s_m2m[32]; /* two or more mbuf */ |
u_quad_t ip6s_mext1; /* one ext mbuf */ |
u_quad_t ip6s_mext2m; /* two or more ext mbuf */ |
u_quad_t ip6s_exthdrtoolong; /* ext hdr are not continuous */ |
u_quad_t ip6s_nogif; /* no match gif found */ |
u_quad_t ip6s_toomanyhdr; /* discarded due to too many headers */ |
/* |
* statistics for improvement of the source address selection |
* algorithm: |
* XXX: hardcoded 16 = # of ip6 multicast scope types + 1 |
*/ |
/* number of times that address selection fails */ |
u_quad_t ip6s_sources_none; |
/* number of times that an address on the outgoing I/F is chosen */ |
u_quad_t ip6s_sources_sameif[16]; |
/* number of times that an address on a non-outgoing I/F is chosen */ |
u_quad_t ip6s_sources_otherif[16]; |
/* |
* number of times that an address that has the same scope |
* from the destination is chosen. |
*/ |
u_quad_t ip6s_sources_samescope[16]; |
/* |
* number of times that an address that has a different scope |
* from the destination is chosen. |
*/ |
u_quad_t ip6s_sources_otherscope[16]; |
/* number of times that an deprecated address is chosen */ |
u_quad_t ip6s_sources_deprecated[16]; |
u_quad_t ip6s_forward_cachehit; |
u_quad_t ip6s_forward_cachemiss; |
}; |
#ifdef _KERNEL |
/* |
* IPv6 onion peeling state. |
* it will be initialized when we come into ip6_input(). |
* XXX do not make it a kitchen sink! |
*/ |
struct ip6aux { |
u_int32_t ip6a_flags; |
#define IP6A_SWAP 0x01 /* swapped home/care-of on packet */ |
#define IP6A_HASEEN 0x02 /* HA was present */ |
#define IP6A_BRUID 0x04 /* BR Unique Identifier was present */ |
#define IP6A_RTALERTSEEN 0x08 /* rtalert present */ |
/* ip6.ip6_src */ |
struct in6_addr ip6a_careof; /* care-of address of the peer */ |
struct in6_addr ip6a_home; /* home address of the peer */ |
u_int16_t ip6a_bruid; /* BR unique identifier */ |
/* ip6.ip6_dst */ |
struct in6_ifaddr *ip6a_dstia6; /* my ifaddr that matches ip6_dst */ |
/* rtalert */ |
u_int16_t ip6a_rtalert; /* rtalert option value */ |
/* |
* decapsulation history will be here. |
* with IPsec it may not be accurate. |
*/ |
}; |
#endif |
#ifdef _KERNEL |
/* flags passed to ip6_output as last parameter */ |
#define IPV6_DADOUTPUT 0x01 /* DAD */ |
#define IPV6_FORWARDING 0x02 /* most of IPv6 header exists */ |
#define IPV6_MINMTU 0x04 /* use minimum MTU (IPV6_USE_MIN_MTU) */ |
extern struct ip6stat ip6stat; /* statistics */ |
extern u_int32_t ip6_id; /* fragment identifier */ |
extern int ip6_defhlim; /* default hop limit */ |
extern int ip6_defmcasthlim; /* default multicast hop limit */ |
extern int ip6_forwarding; /* act as router? */ |
extern int ip6_forward_srcrt; /* forward src-routed? */ |
extern int ip6_gif_hlim; /* Hop limit for gif encap packet */ |
extern int ip6_use_deprecated; /* allow deprecated addr as source */ |
extern int ip6_rr_prune; /* router renumbering prefix |
* walk list every 5 sec. */ |
extern int ip6_v6only; |
extern struct socket *ip6_mrouter; /* multicast routing daemon */ |
extern int ip6_sendredirects; /* send IP redirects when forwarding? */ |
extern int ip6_maxfragpackets; /* Maximum packets in reassembly queue */ |
extern int ip6_sourcecheck; /* Verify source interface */ |
extern int ip6_sourcecheck_interval; /* Interval between log messages */ |
extern int ip6_accept_rtadv; /* Acts as a host not a router */ |
extern int ip6_keepfaith; /* Firewall Aided Internet Translator */ |
extern int ip6_log_interval; |
extern time_t ip6_log_time; |
extern int ip6_hdrnestlimit; /* upper limit of # of extension headers */ |
extern int ip6_dad_count; /* DupAddrDetectionTransmits */ |
extern u_int32_t ip6_flow_seq; |
extern int ip6_auto_flowlabel; |
extern int ip6_auto_linklocal; |
extern int ip6_anonportmin; /* minimum ephemeral port */ |
extern int ip6_anonportmax; /* maximum ephemeral port */ |
extern int ip6_lowportmin; /* minimum reserved port */ |
extern int ip6_lowportmax; /* maximum reserved port */ |
extern int ip6_use_tempaddr; /* whether to use temporary addresses. */ |
extern struct pr_usrreqs rip6_usrreqs; |
struct sockopt; |
struct inpcb; |
int icmp6_ctloutput __P((struct socket *, struct sockopt *sopt)); |
struct in6_ifaddr; |
void ip6_init __P((void)); |
void ip6intr __P((void)); |
void ip6_input __P((struct mbuf *)); |
struct in6_ifaddr *ip6_getdstifaddr __P((struct mbuf *)); |
void ip6_freepcbopts __P((struct ip6_pktopts *)); |
void ip6_freemoptions __P((struct ip6_moptions *)); |
int ip6_unknown_opt __P((u_int8_t *, struct mbuf *, int)); |
char * ip6_get_prevhdr __P((struct mbuf *, int)); |
int ip6_nexthdr __P((struct mbuf *, int, int, int *)); |
int ip6_lasthdr __P((struct mbuf *, int, int, int *)); |
struct mbuf *ip6_addaux __P((struct mbuf *)); |
struct mbuf *ip6_findaux __P((struct mbuf *)); |
void ip6_delaux __P((struct mbuf *)); |
int ip6_mforward __P((struct ip6_hdr *, struct ifnet *, struct mbuf *)); |
int ip6_process_hopopts __P((struct mbuf *, u_int8_t *, int, u_int32_t *, |
u_int32_t *)); |
void ip6_savecontrol __P((struct inpcb *, struct mbuf **, struct ip6_hdr *, |
struct mbuf *)); |
void ip6_notify_pmtu __P((struct inpcb *, struct sockaddr_in6 *, |
u_int32_t *)); |
int ip6_sysctl __P((int *, u_int, void *, size_t *, void *, size_t)); |
void ip6_forward __P((struct mbuf *, int)); |
void ip6_mloopback __P((struct ifnet *, struct mbuf *, struct sockaddr_in6 *)); |
int ip6_output __P((struct mbuf *, struct ip6_pktopts *, |
struct route_in6 *, |
int, |
struct ip6_moptions *, struct ifnet **)); |
int ip6_ctloutput __P((struct socket *, struct sockopt *sopt)); |
void init_ip6pktopts __P((struct ip6_pktopts *)); |
int ip6_setpktoptions __P((struct mbuf *, struct ip6_pktopts *, int, int)); |
void ip6_clearpktopts __P((struct ip6_pktopts *, int, int)); |
struct ip6_pktopts *ip6_copypktopts __P((struct ip6_pktopts *, int)); |
int ip6_optlen __P((struct inpcb *)); |
int route6_input __P((struct mbuf **, int *, int)); |
void frag6_init __P((void)); |
int frag6_input __P((struct mbuf **, int *, int)); |
void frag6_slowtimo __P((void)); |
void frag6_drain __P((void)); |
void rip6_init __P((void)); |
int rip6_input __P((struct mbuf **mp, int *offp, int proto)); |
void rip6_ctlinput __P((int, struct sockaddr *, void *)); |
int rip6_ctloutput __P((struct socket *so, struct sockopt *sopt)); |
int rip6_output __P((struct mbuf *, ...)); |
int rip6_usrreq __P((struct socket *, |
int, struct mbuf *, struct mbuf *, struct mbuf *, struct thread *)); |
int dest6_input __P((struct mbuf **, int *, int)); |
int none_input __P((struct mbuf **, int *, int)); |
#endif /* _KERNEL */ |
#endif /* !_NETINET6_IP6_VAR_H_ */ |
//pkgnet/tags/20230208/watt32/inc/netinet6/ip6proto.h |
---|
0,0 → 1,167 |
/*!\file netinet6/ip6proto.h |
* |
*/ |
/* $FreeBSD: src/sys/netinet6/ip6protosw.h,v 1.9 2002/04/19 04:46:23 suz Exp $ */ |
/* $KAME: ip6protosw.h,v 1.25 2001/09/26 06:13:03 keiichi Exp $ */ |
/* |
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. Neither the name of the project nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
* |
*/ |
/* BSDI protosw.h,v 2.3 1996/10/11 16:02:40 pjd Exp */ |
/*- |
* Copyright (c) 1982, 1986, 1993 |
* The Regents of the University of California. All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. All advertising materials mentioning features or use of this software |
* must display the following acknowledgement: |
* This product includes software developed by the University of |
* California, Berkeley and its contributors. |
* 4. Neither the name of the University nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
* |
* @(#)protosw.h 8.1 (Berkeley) 6/2/93 |
*/ |
#ifndef _NETINET6_IP6PROTOSW_H_ |
#define _NETINET6_IP6PROTOSW_H_ |
/* |
* For pfil_head structure. |
*/ |
#include <net/pfil.h> |
/* |
* Protocol switch table for IPv6. |
* All other definitions should refer to sys/protosw.h |
*/ |
struct mbuf; |
struct sockaddr; |
struct socket; |
struct domain; |
struct thread; |
struct ip6_hdr; |
struct icmp6_hdr; |
struct in6_addr; |
struct pr_usrreqs; |
/* |
* argument type for the last arg of pr_ctlinput(). |
* should be consulted only with AF_INET6 family. |
* |
* IPv6 ICMP IPv6 [exthdrs] finalhdr paylaod |
* ^ ^ ^ ^ |
* | | ip6c_ip6 ip6c_off |
* | ip6c_icmp6 |
* ip6c_m |
* |
* ip6c_finaldst usually points to ip6c_ip6->ip6_dst. if the original |
* (internal) packet carries a routing header, it may point the final |
* dstination address in the routing header. |
* |
* ip6c_src: ip6c_ip6->ip6_src + scope info + flowlabel in ip6c_ip6 |
* (beware of flowlabel, if you try to compare it against others) |
* ip6c_dst: ip6c_finaldst + scope info |
*/ |
struct ip6ctlparam { |
struct mbuf *ip6c_m; /* start of mbuf chain */ |
struct icmp6_hdr *ip6c_icmp6; /* icmp6 header of target packet */ |
struct ip6_hdr *ip6c_ip6; /* ip6 header of target packet */ |
int ip6c_off; /* offset of the target proto header */ |
struct sockaddr_in6 *ip6c_src; /* srcaddr w/ additional info */ |
struct sockaddr_in6 *ip6c_dst; /* (final) dstaddr w/ additional info */ |
struct in6_addr *ip6c_finaldst; /* final destination address */ |
void *ip6c_cmdarg; /* control command dependent data */ |
u_int8_t ip6c_nxt; /* final next header field */ |
}; |
struct ip6protosw { |
short pr_type; /* socket type used for */ |
struct domain *pr_domain; /* domain protocol a member of */ |
short pr_protocol; /* protocol number */ |
short pr_flags; /* see below */ |
/* protocol-protocol hooks */ |
int (*pr_input) /* input to protocol (from below) */ |
__P((struct mbuf **, int *, int)); |
int (*pr_output) /* output to protocol (from above) */ |
__P((struct mbuf *, ...)); |
void (*pr_ctlinput) /* control input (from below) */ |
__P((int, struct sockaddr *, void *)); |
int (*pr_ctloutput) /* control output (from above) */ |
__P((struct socket *, struct sockopt *)); |
/* user-protocol hook */ |
int (*pr_usrreq) /* user request: see list below */ |
__P((struct socket *, int, struct mbuf *, |
struct mbuf *, struct mbuf *, struct thread *)); |
/* utility hooks */ |
void (*pr_init) /* initialization hook */ |
__P((void)); |
void (*pr_fasttimo) /* fast timeout (200ms) */ |
__P((void)); |
void (*pr_slowtimo) /* slow timeout (500ms) */ |
__P((void)); |
void (*pr_drain) /* flush any excess space possible */ |
__P((void)); |
struct pr_usrreqs *pr_usrreqs; /* supersedes pr_usrreq() */ |
struct pfil_head pr_pfh; |
}; |
#ifdef _KERNEL |
extern struct ip6protosw inet6sw[]; |
#endif |
#endif /* !_NETINET6_IP6PROTOSW_H_ */ |
//pkgnet/tags/20230208/watt32/inc/netinet6/ipcomp.h |
---|
0,0 → 1,75 |
/*!\file netinet6/ipcomp.h |
* |
*/ |
/* $FreeBSD: src/sys/netinet6/ipcomp.h,v 1.4 2002/04/19 04:46:23 suz Exp $ */ |
/* $KAME: ipcomp.h,v 1.11 2001/09/04 08:43:19 itojun Exp $ */ |
/* |
* Copyright (C) 1999 WIDE Project. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. Neither the name of the project nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
*/ |
/* |
* RFC2393 IP payload compression protocol (IPComp). |
*/ |
#ifndef _NETINET6_IPCOMP_H_ |
#define _NETINET6_IPCOMP_H_ |
#if defined(_KERNEL) && !defined(_LKM) |
#include "opt_inet.h" |
#endif |
struct ipcomp { |
u_int8_t comp_nxt; /* Next Header */ |
u_int8_t comp_flags; /* reserved, must be zero */ |
u_int16_t comp_cpi; /* Compression parameter index */ |
}; |
/* well-known algorithm number (in CPI), from RFC2409 */ |
#define IPCOMP_OUI 1 /* vendor specific */ |
#define IPCOMP_DEFLATE 2 /* RFC2394 */ |
#define IPCOMP_LZS 3 /* RFC2395 */ |
#define IPCOMP_MAX 4 |
#define IPCOMP_CPI_NEGOTIATE_MIN 256 |
#ifdef _KERNEL |
struct ipcomp_algorithm { |
int (*compress) __P((struct mbuf *, struct mbuf *, size_t *)); |
int (*decompress) __P((struct mbuf *, struct mbuf *, size_t *)); |
size_t minplen; /* minimum required length for compression */ |
}; |
struct ipsecrequest; |
extern const struct ipcomp_algorithm *ipcomp_algorithm_lookup __P((int)); |
extern void ipcomp4_input __P((struct mbuf *, int)); |
extern int ipcomp4_output __P((struct mbuf *, struct ipsecrequest *)); |
#endif /* KERNEL */ |
#endif /* _NETINET6_IPCOMP_H_ */ |
//pkgnet/tags/20230208/watt32/inc/netinet6/ipcomp6.h |
---|
0,0 → 1,50 |
/*!\file netinet6/ipcomp6.h |
* |
*/ |
/* $FreeBSD: src/sys/netinet6/ipcomp6.h,v 1.2 2001/06/11 12:39:06 ume Exp $ */ |
/* $KAME: ipcomp.h,v 1.8 2000/09/26 07:55:14 itojun Exp $ */ |
/* |
* Copyright (C) 1999 WIDE Project. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. Neither the name of the project nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
*/ |
/* |
* RFC2393 IP payload compression protocol (IPComp). |
*/ |
#ifndef _NETINET6_IPCOMP6_H_ |
#define _NETINET6_IPCOMP6_H_ |
#ifdef _KERNEL |
extern int ipcomp6_input __P((struct mbuf **, int *, int)); |
extern int ipcomp6_output __P((struct mbuf *, u_char *, struct mbuf *, |
struct ipsecrequest *)); |
#endif /*KERNEL*/ |
#endif /*_NETINET6_IPCOMP6_H_*/ |
//pkgnet/tags/20230208/watt32/inc/netinet6/ipsec.h |
---|
0,0 → 1,358 |
/*!\file netinet6/ipsec.h |
* |
*/ |
/* $FreeBSD: src/sys/netinet6/ipsec.h,v 1.9 2002/04/19 04:46:23 suz Exp $ */ |
/* $KAME: ipsec.h,v 1.53 2001/11/20 08:32:38 itojun Exp $ */ |
/* |
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. Neither the name of the project nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
*/ |
/* |
* IPsec controller part. |
*/ |
#ifndef _NETINET6_IPSEC_H_ |
#define _NETINET6_IPSEC_H_ |
#if defined(_KERNEL) && !defined(_LKM) && !defined(KLD_MODULE) |
#include "opt_inet.h" |
#include "opt_ipsec.h" |
#endif |
#include <net/pfkeyv2.h> |
#include <netkey/keydb.h> |
#ifdef _KERNEL |
/* |
* Security Policy Index |
* Ensure that both address families in the "src" and "dst" are same. |
* When the value of the ul_proto is ICMPv6, the port field in "src" |
* specifies ICMPv6 type, and the port field in "dst" specifies ICMPv6 code. |
*/ |
struct secpolicyindex { |
u_int8_t dir; /* direction of packet flow, see blow */ |
struct sockaddr_storage src; /* IP src address for SP */ |
struct sockaddr_storage dst; /* IP dst address for SP */ |
u_int8_t prefs; /* prefix length in bits for src */ |
u_int8_t prefd; /* prefix length in bits for dst */ |
u_int16_t ul_proto; /* upper layer Protocol */ |
#ifdef notyet |
uid_t uids; |
uid_t uidd; |
gid_t gids; |
gid_t gidd; |
#endif |
}; |
/* Security Policy Data Base */ |
struct secpolicy { |
LIST_ENTRY(secpolicy) chain; |
int refcnt; /* reference count */ |
struct secpolicyindex spidx; /* selector */ |
u_int32_t id; /* It's unique number on the system. */ |
u_int state; /* 0: dead, others: alive */ |
#define IPSEC_SPSTATE_DEAD 0 |
#define IPSEC_SPSTATE_ALIVE 1 |
u_int policy; /* DISCARD, NONE or IPSEC, see keyv2.h */ |
struct ipsecrequest *req; |
/* pointer to the ipsec request tree, */ |
/* if policy == IPSEC else this value == NULL.*/ |
/* |
* lifetime handler. |
* the policy can be used without limitiation if both lifetime and |
* validtime are zero. |
* "lifetime" is passed by sadb_lifetime.sadb_lifetime_addtime. |
* "validtime" is passed by sadb_lifetime.sadb_lifetime_usetime. |
*/ |
long created; /* time created the policy */ |
long lastused; /* updated every when kernel sends a packet */ |
long lifetime; /* duration of the lifetime of this policy */ |
long validtime; /* duration this policy is valid without use */ |
}; |
/* Request for IPsec */ |
struct ipsecrequest { |
struct ipsecrequest *next; |
/* pointer to next structure */ |
/* If NULL, it means the end of chain. */ |
struct secasindex saidx;/* hint for search proper SA */ |
/* if __ss_len == 0 then no address specified.*/ |
u_int level; /* IPsec level defined below. */ |
struct secasvar *sav; /* place holder of SA for use */ |
struct secpolicy *sp; /* back pointer to SP */ |
}; |
/* security policy in PCB */ |
struct inpcbpolicy { |
struct secpolicy *sp_in; |
struct secpolicy *sp_out; |
int priv; /* privileged socket ? */ |
}; |
/* SP acquiring list table. */ |
struct secspacq { |
LIST_ENTRY(secspacq) chain; |
struct secpolicyindex spidx; |
long created; /* for lifetime */ |
int count; /* for lifetime */ |
/* XXX: here is mbuf place holder to be sent ? */ |
}; |
#endif /* _KERNEL */ |
/* according to IANA assignment, port 0x0000 and proto 0xff are reserved. */ |
#define IPSEC_PORT_ANY 0 |
#define IPSEC_ULPROTO_ANY 255 |
#define IPSEC_PROTO_ANY 255 |
/* mode of security protocol */ |
/* NOTE: DON'T use IPSEC_MODE_ANY at SPD. It's only use in SAD */ |
#define IPSEC_MODE_ANY 0 /* i.e. wildcard. */ |
#define IPSEC_MODE_TRANSPORT 1 |
#define IPSEC_MODE_TUNNEL 2 |
/* |
* Direction of security policy. |
* NOTE: Since INVALID is used just as flag. |
* The other are used for loop counter too. |
*/ |
#define IPSEC_DIR_ANY 0 |
#define IPSEC_DIR_INBOUND 1 |
#define IPSEC_DIR_OUTBOUND 2 |
#define IPSEC_DIR_MAX 3 |
#define IPSEC_DIR_INVALID 4 |
/* Policy level */ |
/* |
* IPSEC, ENTRUST and BYPASS are allowed for setsockopt() in PCB, |
* DISCARD, IPSEC and NONE are allowed for setkey() in SPD. |
* DISCARD and NONE are allowed for system default. |
*/ |
#define IPSEC_POLICY_DISCARD 0 /* discarding packet */ |
#define IPSEC_POLICY_NONE 1 /* through IPsec engine */ |
#define IPSEC_POLICY_IPSEC 2 /* do IPsec */ |
#define IPSEC_POLICY_ENTRUST 3 /* consulting SPD if present. */ |
#define IPSEC_POLICY_BYPASS 4 /* only for privileged socket. */ |
/* Security protocol level */ |
#define IPSEC_LEVEL_DEFAULT 0 /* reference to system default */ |
#define IPSEC_LEVEL_USE 1 /* use SA if present. */ |
#define IPSEC_LEVEL_REQUIRE 2 /* require SA. */ |
#define IPSEC_LEVEL_UNIQUE 3 /* unique SA. */ |
#define IPSEC_MANUAL_REQID_MAX 0x3fff |
/* |
* if security policy level == unique, this id |
* indicate to a relative SA for use, else is |
* zero. |
* 1 - 0x3fff are reserved for manual keying. |
* 0 are reserved for above reason. Others is |
* for kernel use. |
* Note that this id doesn't identify SA |
* by only itself. |
*/ |
#define IPSEC_REPLAYWSIZE 32 |
/* statistics for ipsec processing */ |
struct ipsecstat { |
u_quad_t in_success; /* succeeded inbound process */ |
u_quad_t in_polvio; |
/* security policy violation for inbound process */ |
u_quad_t in_nosa; /* inbound SA is unavailable */ |
u_quad_t in_inval; /* inbound processing failed due to EINVAL */ |
u_quad_t in_nomem; /* inbound processing failed due to ENOBUFS */ |
u_quad_t in_badspi; /* failed getting a SPI */ |
u_quad_t in_ahreplay; /* AH replay check failed */ |
u_quad_t in_espreplay; /* ESP replay check failed */ |
u_quad_t in_ahauthsucc; /* AH authentication success */ |
u_quad_t in_ahauthfail; /* AH authentication failure */ |
u_quad_t in_espauthsucc; /* ESP authentication success */ |
u_quad_t in_espauthfail; /* ESP authentication failure */ |
u_quad_t in_esphist[256]; |
u_quad_t in_ahhist[256]; |
u_quad_t in_comphist[256]; |
u_quad_t out_success; /* succeeded outbound process */ |
u_quad_t out_polvio; |
/* security policy violation for outbound process */ |
u_quad_t out_nosa; /* outbound SA is unavailable */ |
u_quad_t out_inval; /* outbound process failed due to EINVAL */ |
u_quad_t out_nomem; /* inbound processing failed due to ENOBUFS */ |
u_quad_t out_noroute; /* there is no route */ |
u_quad_t out_esphist[256]; |
u_quad_t out_ahhist[256]; |
u_quad_t out_comphist[256]; |
}; |
/* |
* Definitions for IPsec & Key sysctl operations. |
*/ |
/* |
* Names for IPsec & Key sysctl objects |
*/ |
#define IPSECCTL_STATS 1 /* stats */ |
#define IPSECCTL_DEF_POLICY 2 |
#define IPSECCTL_DEF_ESP_TRANSLEV 3 /* int; ESP transport mode */ |
#define IPSECCTL_DEF_ESP_NETLEV 4 /* int; ESP tunnel mode */ |
#define IPSECCTL_DEF_AH_TRANSLEV 5 /* int; AH transport mode */ |
#define IPSECCTL_DEF_AH_NETLEV 6 /* int; AH tunnel mode */ |
#if 0 /* obsolete, do not reuse */ |
#define IPSECCTL_INBOUND_CALL_IKE 7 |
#endif |
#define IPSECCTL_AH_CLEARTOS 8 |
#define IPSECCTL_AH_OFFSETMASK 9 |
#define IPSECCTL_DFBIT 10 |
#define IPSECCTL_ECN 11 |
#define IPSECCTL_DEBUG 12 |
#define IPSECCTL_ESP_RANDPAD 13 |
#define IPSECCTL_MAXID 14 |
#define IPSECCTL_NAMES { \ |
{ 0, 0 }, \ |
{ 0, 0 }, \ |
{ "def_policy", CTLTYPE_INT }, \ |
{ "esp_trans_deflev", CTLTYPE_INT }, \ |
{ "esp_net_deflev", CTLTYPE_INT }, \ |
{ "ah_trans_deflev", CTLTYPE_INT }, \ |
{ "ah_net_deflev", CTLTYPE_INT }, \ |
{ 0, 0 }, \ |
{ "ah_cleartos", CTLTYPE_INT }, \ |
{ "ah_offsetmask", CTLTYPE_INT }, \ |
{ "dfbit", CTLTYPE_INT }, \ |
{ "ecn", CTLTYPE_INT }, \ |
{ "debug", CTLTYPE_INT }, \ |
{ "esp_randpad", CTLTYPE_INT }, \ |
} |
#define IPSEC6CTL_NAMES { \ |
{ 0, 0 }, \ |
{ 0, 0 }, \ |
{ "def_policy", CTLTYPE_INT }, \ |
{ "esp_trans_deflev", CTLTYPE_INT }, \ |
{ "esp_net_deflev", CTLTYPE_INT }, \ |
{ "ah_trans_deflev", CTLTYPE_INT }, \ |
{ "ah_net_deflev", CTLTYPE_INT }, \ |
{ 0, 0 }, \ |
{ 0, 0 }, \ |
{ 0, 0 }, \ |
{ 0, 0 }, \ |
{ "ecn", CTLTYPE_INT }, \ |
{ "debug", CTLTYPE_INT }, \ |
{ "esp_randpad", CTLTYPE_INT }, \ |
} |
#ifdef _KERNEL |
struct ipsec_output_state { |
struct mbuf *m; |
struct route *ro; |
struct sockaddr *dst; |
}; |
struct ipsec_history { |
int ih_proto; |
u_int32_t ih_spi; |
}; |
extern int ipsec_debug; |
extern struct ipsecstat ipsecstat; |
extern struct secpolicy ip4_def_policy; |
extern int ip4_esp_trans_deflev; |
extern int ip4_esp_net_deflev; |
extern int ip4_ah_trans_deflev; |
extern int ip4_ah_net_deflev; |
extern int ip4_ah_cleartos; |
extern int ip4_ah_offsetmask; |
extern int ip4_ipsec_dfbit; |
extern int ip4_ipsec_ecn; |
extern int ip4_esp_randpad; |
#define ipseclog(x) do { if (ipsec_debug) log x; } while (0) |
extern struct secpolicy *ipsec4_getpolicybysock |
__P((struct mbuf *, u_int, struct socket *, int *)); |
extern struct secpolicy *ipsec4_getpolicybyaddr |
__P((struct mbuf *, u_int, int, int *)); |
struct inpcb; |
extern int ipsec_init_policy __P((struct socket *so, struct inpcbpolicy **)); |
extern int ipsec_copy_policy |
__P((struct inpcbpolicy *, struct inpcbpolicy *)); |
extern u_int ipsec_get_reqlevel __P((struct ipsecrequest *)); |
extern int ipsec4_set_policy __P((struct inpcb *inp, int optname, |
caddr_t request, size_t len, int priv)); |
extern int ipsec4_get_policy __P((struct inpcb *inpcb, caddr_t request, |
size_t len, struct mbuf **mp)); |
extern int ipsec4_delete_pcbpolicy __P((struct inpcb *)); |
extern int ipsec4_in_reject_so __P((struct mbuf *, struct socket *)); |
extern int ipsec4_in_reject __P((struct mbuf *, struct inpcb *)); |
struct secas; |
struct tcpcb; |
extern int ipsec_chkreplay __P((u_int32_t, struct secasvar *)); |
extern int ipsec_updatereplay __P((u_int32_t, struct secasvar *)); |
extern size_t ipsec4_hdrsiz __P((struct mbuf *, u_int, struct inpcb *)); |
extern size_t ipsec_hdrsiz_tcp __P((struct tcpcb *)); |
struct ip; |
extern const char *ipsec4_logpacketstr __P((struct ip *, u_int32_t)); |
extern const char *ipsec_logsastr __P((struct secasvar *)); |
extern void ipsec_dumpmbuf __P((struct mbuf *)); |
extern int ipsec4_output __P((struct ipsec_output_state *, struct secpolicy *, |
int)); |
extern int ipsec4_tunnel_validate __P((struct mbuf *, int, u_int, |
struct secasvar *)); |
extern struct mbuf *ipsec_copypkt __P((struct mbuf *)); |
extern void ipsec_delaux __P((struct mbuf *)); |
extern int ipsec_setsocket __P((struct mbuf *, struct socket *)); |
extern struct socket *ipsec_getsocket __P((struct mbuf *)); |
extern int ipsec_addhist __P((struct mbuf *, int, u_int32_t)); |
extern struct ipsec_history *ipsec_gethist __P((struct mbuf *, int *)); |
extern void ipsec_clearhist __P((struct mbuf *)); |
#endif /* _KERNEL */ |
#ifndef _KERNEL |
extern caddr_t ipsec_set_policy __P((char *, int)); |
extern int ipsec_get_policylen __P((caddr_t)); |
extern char *ipsec_dump_policy __P((caddr_t, char *)); |
extern const char *ipsec_strerror __P((void)); |
#endif /* !_KERNEL */ |
#endif /* _NETINET6_IPSEC_H_ */ |
//pkgnet/tags/20230208/watt32/inc/netinet6/ipsec6.h |
---|
0,0 → 1,87 |
/*!\file netinet6/ipsec6.h |
* |
*/ |
/* $FreeBSD: src/sys/netinet6/ipsec6.h,v 1.5 2001/06/11 12:39:06 ume Exp $ */ |
/* $KAME: ipsec.h,v 1.44 2001/03/23 08:08:47 itojun Exp $ */ |
/* |
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. Neither the name of the project nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
*/ |
/* |
* IPsec controller part. |
*/ |
#ifndef _NETINET6_IPSEC6_H_ |
#define _NETINET6_IPSEC6_H_ |
#include <net/pfkeyv2.h> |
#include <netkey/keydb.h> |
#ifdef _KERNEL |
extern struct ipsecstat ipsec6stat; |
extern struct secpolicy ip6_def_policy; |
extern int ip6_esp_trans_deflev; |
extern int ip6_esp_net_deflev; |
extern int ip6_ah_trans_deflev; |
extern int ip6_ah_net_deflev; |
extern int ip6_ipsec_ecn; |
extern int ip6_esp_randpad; |
extern struct secpolicy *ipsec6_getpolicybysock |
__P((struct mbuf *, u_int, struct socket *, int *)); |
extern struct secpolicy *ipsec6_getpolicybyaddr |
__P((struct mbuf *, u_int, int, int *)); |
struct inpcb; |
extern int ipsec6_in_reject_so __P((struct mbuf *, struct socket *)); |
extern int ipsec6_delete_pcbpolicy __P((struct inpcb *)); |
extern int ipsec6_set_policy __P((struct inpcb *inp, int optname, |
caddr_t request, size_t len, int priv)); |
extern int ipsec6_get_policy |
__P((struct inpcb *inp, caddr_t request, size_t len, struct mbuf **mp)); |
extern int ipsec6_in_reject __P((struct mbuf *, struct inpcb *)); |
struct tcp6cb; |
extern size_t ipsec6_hdrsiz __P((struct mbuf *, u_int, struct inpcb *)); |
struct ip6_hdr; |
extern const char *ipsec6_logpacketstr __P((struct ip6_hdr *, u_int32_t)); |
extern int ipsec6_output_trans __P((struct ipsec_output_state *, u_char *, |
struct mbuf *, struct secpolicy *, int, int *)); |
extern int ipsec6_output_tunnel __P((struct ipsec_output_state *, |
struct secpolicy *, int)); |
extern int ipsec6_tunnel_validate __P((struct mbuf *, int, u_int, |
struct secasvar *)); |
#endif /*_KERNEL*/ |
#endif /*_NETINET6_IPSEC6_H_*/ |
//pkgnet/tags/20230208/watt32/inc/netinet6/mld6_var.h |
---|
0,0 → 1,57 |
/*!\file netinet6/mld6_var.h |
* |
*/ |
/* $FreeBSD: src/sys/netinet6/mld6_var.h,v 1.2 2000/07/04 16:35:10 itojun Exp $ */ |
/* $KAME: mld6_var.h,v 1.4 2000/03/25 07:23:54 sumikawa Exp $ */ |
/* |
* Copyright (C) 1998 WIDE Project. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. Neither the name of the project nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
*/ |
#ifndef _NETINET6_MLD6_VAR_H_ |
#define _NETINET6_MLD6_VAR_H_ |
#ifdef _KERNEL |
#define MLD6_RANDOM_DELAY(X) (random() % (X) + 1) |
/* |
* States for MLD stop-listening processing |
*/ |
#define MLD6_OTHERLISTENER 0 |
#define MLD6_IREPORTEDLAST 1 |
void mld6_init __P((void)); |
void mld6_input __P((struct mbuf *, int)); |
void mld6_start_listening __P((struct in6_multi *)); |
void mld6_stop_listening __P((struct in6_multi *)); |
void mld6_fasttimeo __P((void)); |
#endif /* _KERNEL */ |
#endif /* _NETINET6_MLD6_VAR_H_ */ |
//pkgnet/tags/20230208/watt32/inc/netinet6/nd6.h |
---|
0,0 → 1,408 |
/*!\file netinet6/nd6.h |
* IPv6 Neighbor Discovery. |
*/ |
/* $FreeBSD: src/sys/netinet6/nd6.h,v 1.10 2002/04/19 04:46:23 suz Exp $ */ |
/* $KAME: nd6.h,v 1.76 2001/12/18 02:10:31 itojun Exp $ */ |
/* |
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. Neither the name of the project nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
*/ |
#ifndef _NETINET6_ND6_H_ |
#define _NETINET6_ND6_H_ |
/* see net/route.h, or net/if_inarp.h */ |
#ifndef RTF_ANNOUNCE |
#define RTF_ANNOUNCE RTF_PROTO2 |
#endif |
#include <sys/queue.h> |
#include <sys/callout.h> |
struct llinfo_nd6 { |
struct llinfo_nd6 *ln_next; |
struct llinfo_nd6 *ln_prev; |
struct rtentry *ln_rt; |
struct mbuf *ln_hold; /* last packet until resolved/timeout */ |
long ln_asked; /* number of queries already sent for this addr */ |
u_long ln_expire; /* lifetime for NDP state transition */ |
short ln_state; /* reachability state */ |
short ln_router; /* 2^0: ND6 router bit */ |
int ln_byhint; /* # of times we made it reachable by UL hint */ |
}; |
#define ND6_LLINFO_NOSTATE -2 |
/* |
* We don't need the WAITDELETE state any more, but we keep the definition |
* in a comment line instead of removing it. This is necessary to avoid |
* unintentionally reusing the value for another purpose, which might |
* affect backward compatibility with old applications. |
* (20000711 jinmei@kame.net) |
*/ |
/* #define ND6_LLINFO_WAITDELETE -1 */ |
#define ND6_LLINFO_INCOMPLETE 0 |
#define ND6_LLINFO_REACHABLE 1 |
#define ND6_LLINFO_STALE 2 |
#define ND6_LLINFO_DELAY 3 |
#define ND6_LLINFO_PROBE 4 |
#define ND6_IS_LLINFO_PROBREACH(n) ((n)->ln_state > ND6_LLINFO_INCOMPLETE) |
struct nd_ifinfo { |
u_int32_t linkmtu; /* LinkMTU */ |
u_int32_t maxmtu; /* Upper bound of LinkMTU */ |
u_int32_t basereachable; /* BaseReachableTime */ |
u_int32_t reachable; /* Reachable Time */ |
u_int32_t retrans; /* Retrans Timer */ |
u_int32_t flags; /* Flags */ |
int recalctm; /* BaseReacable re-calculation timer */ |
u_int8_t chlim; /* CurHopLimit */ |
u_int8_t receivedra; |
/* the following 3 members are for privacy extension for addrconf */ |
u_int8_t randomseed0[8]; /* upper 64 bits of MD5 digest */ |
u_int8_t randomseed1[8]; /* lower 64 bits (usually the EUI64 IFID) */ |
u_int8_t randomid[8]; /* current random ID */ |
}; |
#define ND6_IFF_PERFORMNUD 0x1 |
struct in6_nbrinfo { |
char ifname[IFNAMSIZ]; /* if name, e.g. "en0" */ |
struct in6_addr addr; /* IPv6 address of the neighbor */ |
long asked; /* number of queries already sent for this addr */ |
int isrouter; /* if it acts as a router */ |
int state; /* reachability state */ |
int expire; /* lifetime for NDP state transition */ |
}; |
#define DRLSTSIZ 10 |
#define PRLSTSIZ 10 |
struct in6_drlist { |
char ifname[IFNAMSIZ]; |
struct { |
struct in6_addr rtaddr; |
u_char flags; |
u_short rtlifetime; |
u_long expire; |
u_short if_index; |
} defrouter[DRLSTSIZ]; |
}; |
struct in6_defrouter { |
struct sockaddr_in6 rtaddr; |
u_char flags; |
u_short rtlifetime; |
u_long expire; |
u_short if_index; |
}; |
struct in6_prlist { |
char ifname[IFNAMSIZ]; |
struct { |
struct in6_addr prefix; |
struct prf_ra raflags; |
u_char prefixlen; |
u_char origin; |
u_int32_t vltime; |
u_int32_t pltime; |
time_t expire; |
u_short if_index; |
u_short advrtrs; /* number of advertisement routers */ |
struct in6_addr advrtr[DRLSTSIZ]; /* XXX: explicit limit */ |
} prefix[PRLSTSIZ]; |
}; |
struct in6_prefix { |
struct sockaddr_in6 prefix; |
struct prf_ra raflags; |
u_char prefixlen; |
u_char origin; |
u_long vltime; |
u_long pltime; |
u_long expire; |
u_int32_t flags; |
int refcnt; |
u_short if_index; |
u_short advrtrs; /* number of advertisement routers */ |
/* struct sockaddr_in6 advrtr[] */ |
}; |
#ifdef _KERNEL |
struct in6_ondireq { |
char ifname[IFNAMSIZ]; |
struct { |
u_int32_t linkmtu; /* LinkMTU */ |
u_int32_t maxmtu; /* Upper bound of LinkMTU */ |
u_int32_t basereachable; /* BaseReachableTime */ |
u_int32_t reachable; /* Reachable Time */ |
u_int32_t retrans; /* Retrans Timer */ |
u_int32_t flags; /* Flags */ |
int recalctm; /* BaseReacable re-calculation timer */ |
u_int8_t chlim; /* CurHopLimit */ |
u_int8_t receivedra; |
} ndi; |
}; |
#endif |
struct in6_ndireq { |
char ifname[IFNAMSIZ]; |
struct nd_ifinfo ndi; |
}; |
struct in6_ndifreq { |
char ifname[IFNAMSIZ]; |
u_long ifindex; |
}; |
/* Prefix status */ |
#define NDPRF_ONLINK 0x1 |
#define NDPRF_DETACHED 0x2 |
/* protocol constants */ |
#define MAX_RTR_SOLICITATION_DELAY 1 /* 1sec */ |
#define RTR_SOLICITATION_INTERVAL 4 /* 4sec */ |
#define MAX_RTR_SOLICITATIONS 3 |
#define ND6_INFINITE_LIFETIME 0xffffffff |
#ifdef _KERNEL |
/* node constants */ |
#define MAX_REACHABLE_TIME 3600000 /* msec */ |
#define REACHABLE_TIME 30000 /* msec */ |
#define RETRANS_TIMER 1000 /* msec */ |
#define MIN_RANDOM_FACTOR 512 /* 1024 * 0.5 */ |
#define MAX_RANDOM_FACTOR 1536 /* 1024 * 1.5 */ |
#define DEF_TEMP_VALID_LIFETIME 604800 /* 1 week */ |
#define DEF_TEMP_PREFERRED_LIFETIME 86400 /* 1 day */ |
#define TEMPADDR_REGEN_ADVANCE 5 /* sec */ |
#define MAX_TEMP_DESYNC_FACTOR 600 /* 10 min */ |
#define ND_COMPUTE_RTIME(x) \ |
(((MIN_RANDOM_FACTOR * (x >> 10)) + (random() & \ |
((MAX_RANDOM_FACTOR - MIN_RANDOM_FACTOR) * (x >> 10)))) /1000) |
TAILQ_HEAD(nd_drhead, nd_defrouter); |
struct nd_defrouter { |
TAILQ_ENTRY(nd_defrouter) dr_entry; |
struct in6_addr rtaddr; |
u_char flags; /* flags on RA message */ |
u_short rtlifetime; |
u_long expire; |
u_long advint; /* Mobile IPv6 addition (milliseconds) */ |
u_long advint_expire; /* Mobile IPv6 addition */ |
int advints_lost; /* Mobile IPv6 addition */ |
struct ifnet *ifp; |
}; |
struct nd_prefix { |
struct ifnet *ndpr_ifp; |
LIST_ENTRY(nd_prefix) ndpr_entry; |
struct sockaddr_in6 ndpr_prefix; /* prefix */ |
struct in6_addr ndpr_mask; /* netmask derived from the prefix */ |
struct in6_addr ndpr_addr; /* address that is derived from the prefix */ |
u_int32_t ndpr_vltime; /* advertised valid lifetime */ |
u_int32_t ndpr_pltime; /* advertised preferred lifetime */ |
time_t ndpr_expire; /* expiration time of the prefix */ |
time_t ndpr_preferred; /* preferred time of the prefix */ |
struct prf_ra ndpr_flags; |
u_int32_t ndpr_stateflags; /* actual state flags */ |
/* list of routers that advertise the prefix: */ |
LIST_HEAD(pr_rtrhead, nd_pfxrouter) ndpr_advrtrs; |
u_char ndpr_plen; |
int ndpr_refcnt; /* reference couter from addresses */ |
}; |
#define ndpr_next ndpr_entry.le_next |
#define ndpr_raf ndpr_flags |
#define ndpr_raf_onlink ndpr_flags.onlink |
#define ndpr_raf_auto ndpr_flags.autonomous |
/* |
* We keep expired prefix for certain amount of time, for validation purposes. |
* 1800s = MaxRtrAdvInterval |
*/ |
#define NDPR_KEEP_EXPIRED (1800 * 2) |
/* |
* Message format for use in obtaining information about prefixes |
* from inet6 sysctl function |
*/ |
struct inet6_ndpr_msghdr { |
u_short inpm_msglen; /* to skip over non-understood messages */ |
u_char inpm_version; /* future binary compatibility */ |
u_char inpm_type; /* message type */ |
struct in6_addr inpm_prefix; |
u_long prm_vltim; |
u_long prm_pltime; |
u_long prm_expire; |
u_long prm_preferred; |
struct in6_prflags prm_flags; |
u_short prm_index; /* index for associated ifp */ |
u_char prm_plen; /* length of prefix in bits */ |
}; |
#define prm_raf_onlink prm_flags.prf_ra.onlink |
#define prm_raf_auto prm_flags.prf_ra.autonomous |
#define prm_statef_onlink prm_flags.prf_state.onlink |
#define prm_rrf_decrvalid prm_flags.prf_rr.decrvalid |
#define prm_rrf_decrprefd prm_flags.prf_rr.decrprefd |
#define ifpr2ndpr(ifpr) ((struct nd_prefix *)(ifpr)) |
#define ndpr2ifpr(ndpr) ((struct ifprefix *)(ndpr)) |
struct nd_pfxrouter { |
LIST_ENTRY(nd_pfxrouter) pfr_entry; |
#define pfr_next pfr_entry.le_next |
struct nd_defrouter *router; |
}; |
LIST_HEAD(nd_prhead, nd_prefix); |
/* nd6.c */ |
extern int nd6_prune; |
extern int nd6_delay; |
extern int nd6_umaxtries; |
extern int nd6_mmaxtries; |
extern int nd6_useloopback; |
extern int nd6_maxnudhint; |
extern int nd6_gctimer; |
extern struct llinfo_nd6 llinfo_nd6; |
extern struct nd_ifinfo *nd_ifinfo; |
extern struct nd_drhead nd_defrouter; |
extern struct nd_prhead nd_prefix; |
extern int nd6_debug; |
#define nd6log(x) do { if (nd6_debug) log x; } while (0) |
extern struct callout nd6_timer_ch; |
/* nd6_rtr.c */ |
extern int nd6_defifindex; |
extern int ip6_desync_factor; /* seconds */ |
extern u_int32_t ip6_temp_preferred_lifetime; /* seconds */ |
extern u_int32_t ip6_temp_valid_lifetime; /* seconds */ |
extern int ip6_temp_regen_advance; /* seconds */ |
union nd_opts { |
struct nd_opt_hdr *nd_opt_array[9]; /* max = home agent info */ |
struct { |
struct nd_opt_hdr *zero; |
struct nd_opt_hdr *src_lladdr; |
struct nd_opt_hdr *tgt_lladdr; |
struct nd_opt_prefix_info *pi_beg; /* multiple opts, start */ |
struct nd_opt_rd_hdr *rh; |
struct nd_opt_mtu *mtu; |
struct nd_opt_hdr *six; |
struct nd_opt_advint *adv; |
struct nd_opt_hai *hai; |
struct nd_opt_hdr *search; /* multiple opts */ |
struct nd_opt_hdr *last; /* multiple opts */ |
int done; |
struct nd_opt_prefix_info *pi_end;/* multiple opts, end */ |
} nd_opt_each; |
}; |
#define nd_opts_src_lladdr nd_opt_each.src_lladdr |
#define nd_opts_tgt_lladdr nd_opt_each.tgt_lladdr |
#define nd_opts_pi nd_opt_each.pi_beg |
#define nd_opts_pi_end nd_opt_each.pi_end |
#define nd_opts_rh nd_opt_each.rh |
#define nd_opts_mtu nd_opt_each.mtu |
#define nd_opts_adv nd_opt_each.adv |
#define nd_opts_hai nd_opt_each.hai |
#define nd_opts_search nd_opt_each.search |
#define nd_opts_last nd_opt_each.last |
#define nd_opts_done nd_opt_each.done |
/* XXX: need nd6_var.h?? */ |
/* nd6.c */ |
void nd6_init __P((void)); |
void nd6_ifattach __P((struct ifnet *)); |
int nd6_is_addr_neighbor __P((struct sockaddr_in6 *, struct ifnet *)); |
void nd6_option_init __P((void *, int, union nd_opts *)); |
struct nd_opt_hdr *nd6_option __P((union nd_opts *)); |
int nd6_options __P((union nd_opts *)); |
struct rtentry *nd6_lookup __P((struct in6_addr *, int, struct ifnet *)); |
void nd6_setmtu __P((struct ifnet *)); |
void nd6_timer __P((void *)); |
void nd6_purge __P((struct ifnet *)); |
struct llinfo_nd6 *nd6_free __P((struct rtentry *)); |
void nd6_nud_hint __P((struct rtentry *, struct in6_addr *, int)); |
int nd6_resolve __P((struct ifnet *, struct rtentry *, |
struct mbuf *, struct sockaddr *, u_char *)); |
void nd6_rtrequest __P((int, struct rtentry *, struct rt_addrinfo *)); |
int nd6_ioctl __P((u_long, caddr_t, struct ifnet *)); |
struct rtentry *nd6_cache_lladdr __P((struct ifnet *, struct in6_addr *, |
char *, int, int, int)); |
int nd6_output __P((struct ifnet *, struct ifnet *, struct mbuf *, |
struct sockaddr_in6 *, struct rtentry *)); |
int nd6_storelladdr __P((struct ifnet *, struct rtentry *, struct mbuf *, |
struct sockaddr *, u_char *)); |
int nd6_need_cache __P((struct ifnet *)); |
/* nd6_nbr.c */ |
void nd6_na_input __P((struct mbuf *, int, int)); |
void nd6_na_output __P((struct ifnet *, const struct in6_addr *, |
const struct in6_addr *, u_long, int, struct sockaddr *)); |
void nd6_ns_input __P((struct mbuf *, int, int)); |
void nd6_ns_output __P((struct ifnet *, const struct in6_addr *, |
const struct in6_addr *, struct llinfo_nd6 *, int)); |
caddr_t nd6_ifptomac __P((struct ifnet *)); |
void nd6_dad_start __P((struct ifaddr *, int *)); |
void nd6_dad_stop __P((struct ifaddr *)); |
void nd6_dad_duplicated __P((struct ifaddr *)); |
/* nd6_rtr.c */ |
void nd6_rs_input __P((struct mbuf *, int, int)); |
void nd6_ra_input __P((struct mbuf *, int, int)); |
void prelist_del __P((struct nd_prefix *)); |
void defrouter_addreq __P((struct nd_defrouter *)); |
void defrouter_delreq __P((struct nd_defrouter *, int)); |
void defrouter_select __P((void)); |
void defrtrlist_del __P((struct nd_defrouter *)); |
void prelist_remove __P((struct nd_prefix *)); |
int prelist_update __P((struct nd_prefix *, struct nd_defrouter *, |
struct mbuf *)); |
int nd6_prelist_add __P((struct nd_prefix *, struct nd_defrouter *, |
struct nd_prefix **)); |
int nd6_prefix_onlink __P((struct nd_prefix *)); |
int nd6_prefix_offlink __P((struct nd_prefix *)); |
void pfxlist_onlink_check __P((void)); |
struct nd_defrouter *defrouter_lookup __P((struct in6_addr *, |
struct ifnet *)); |
struct nd_prefix *nd6_prefix_lookup __P((struct nd_prefix *)); |
int in6_init_prefix_ltimes __P((struct nd_prefix *ndpr)); |
void rt6_flush __P((struct in6_addr *, struct ifnet *)); |
int nd6_setdefaultiface __P((int)); |
int in6_tmpifadd __P((const struct in6_ifaddr *, int)); |
#endif /* _KERNEL */ |
#endif /* _NETINET6_ND6_H_ */ |
//pkgnet/tags/20230208/watt32/inc/netinet6/pim6.h |
---|
0,0 → 1,73 |
/*!\file netinet6/pim6.h |
* |
*/ |
/* $FreeBSD: src/sys/netinet6/pim6.h,v 1.2 2000/07/04 16:35:10 itojun Exp $ */ |
/* $KAME: pim6.h,v 1.3 2000/03/25 07:23:58 sumikawa Exp $ */ |
/* |
* Copyright (C) 1998 WIDE Project. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. Neither the name of the project nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
*/ |
/* |
* Protocol Independent Multicast (PIM) definitions |
* |
* Written by Ahmed Helmy, SGI, July 1996 |
* |
* MULTICAST |
*/ |
/* |
* PIM packet header |
*/ |
#define PIM_VERSION 2 |
struct pim { |
#if defined(BYTE_ORDER) && (BYTE_ORDER == LITTLE_ENDIAN) |
u_char pim_type:4, /* the PIM message type, currently they are: |
* Hello, Register, Register-Stop, Join/Prune, |
* Bootstrap, Assert, Graft (PIM-DM only), |
* Graft-Ack (PIM-DM only), C-RP-Adv |
*/ |
pim_ver:4; /* PIM version number; 2 for PIMv2 */ |
#else |
u_char pim_ver:4, /* PIM version */ |
pim_type:4; /* PIM type */ |
#endif |
u_char pim_rsv; /* Reserved */ |
u_short pim_cksum; /* IP style check sum */ |
}; |
#define PIM_MINLEN 8 /* The header min. length is 8 */ |
#define PIM6_REG_MINLEN (PIM_MINLEN+40) /* Register message + inner IP6 header */ |
/* |
* Message types |
*/ |
#define PIM_REGISTER 1 /* PIM Register type is 1 */ |
/* second bit in reg_head is the null bit */ |
#define PIM_NULL_REGISTER 0x40000000 |
//pkgnet/tags/20230208/watt32/inc/netinet6/pim6_var.h |
---|
0,0 → 1,74 |
/*!\file netinet6/pim6_var.h |
* |
*/ |
/* $FreeBSD: src/sys/netinet6/pim6_var.h,v 1.3 2000/07/04 16:35:10 itojun Exp $ */ |
/* $KAME: pim6_var.h,v 1.8 2000/06/06 08:07:43 jinmei Exp $ */ |
/* |
* Copyright (C) 1998 WIDE Project. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. Neither the name of the project nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
*/ |
#ifndef _NETINET6_PIM6_VAR_H_ |
#define _NETINET6_PIM6_VAR_H_ |
/* |
* Protocol Independent Multicast (PIM), |
* implementation-specific definitions. |
* |
* Written by George Edmond Eddy (Rusty), ISI, February 1998 |
* Modified by Pavlin Ivanov Radoslavov, USC/ISI, May 1998 |
*/ |
struct pim6stat { |
u_quad_t pim6s_rcv_total; /* total PIM messages received */ |
u_quad_t pim6s_rcv_tooshort; /* received with too few bytes */ |
u_quad_t pim6s_rcv_badsum; /* received with bad checksum */ |
u_quad_t pim6s_rcv_badversion; /* received bad PIM version */ |
u_quad_t pim6s_rcv_registers; /* received registers */ |
u_quad_t pim6s_rcv_badregisters; /* received invalid registers */ |
u_quad_t pim6s_snd_registers; /* sent registers */ |
}; |
#if (defined(KERNEL)) || (defined(_KERNEL)) |
extern struct pim6stat pim6stat; |
int pim6_input __P((struct mbuf **, int*, int)); |
#endif /* KERNEL */ |
/* |
* Names for PIM sysctl objects |
*/ |
#define PIM6CTL_STATS 1 /* statistics (read-only) */ |
#define PIM6CTL_MAXID 2 |
#define PIM6CTL_NAMES { \ |
{ 0, 0 }, \ |
{ 0, 0 }, \ |
} |
#endif /* _NETINET6_PIM6_VAR_H_ */ |
//pkgnet/tags/20230208/watt32/inc/netinet6/raw_ip6.h |
---|
0,0 → 1,58 |
/*!\file netinet6/raw_ip6.h |
* |
*/ |
/* $FreeBSD: src/sys/netinet6/raw_ip6.h,v 1.1 2001/06/11 12:39:06 ume Exp $ */ |
/* $KAME: raw_ip6.h,v 1.2 2001/05/27 13:28:35 itojun Exp $ */ |
/* |
* Copyright (C) 2001 WIDE Project. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. Neither the name of the project nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
*/ |
#ifndef _NETINET6_RAW_IP6_H_ |
#define _NETINET6_RAW_IP6_H_ |
/* |
* ICMPv6 stat is counted separately. see netinet/icmp6.h |
*/ |
struct rip6stat { |
u_quad_t rip6s_ipackets; /* total input packets */ |
u_quad_t rip6s_isum; /* input checksum computations */ |
u_quad_t rip6s_badsum; /* of above, checksum error */ |
u_quad_t rip6s_nosock; /* no matching socket */ |
u_quad_t rip6s_nosockmcast; /* of above, arrived as multicast */ |
u_quad_t rip6s_fullsock; /* not delivered, input socket full */ |
u_quad_t rip6s_opackets; /* total output packets */ |
}; |
#ifdef _KERNEL |
extern struct rip6stat rip6stat; |
#endif |
#endif |
//pkgnet/tags/20230208/watt32/inc/netinet6/scope6_v.h |
---|
0,0 → 1,50 |
/*!\file netinet6/scope6_v.h |
* |
*/ |
/* $FreeBSD: src/sys/netinet6/scope6_var.h,v 1.1 2000/07/04 16:35:10 itojun Exp $ */ |
/* $KAME: scope6_var.h,v 1.4 2000/05/18 15:03:27 jinmei Exp $ */ |
/* |
* Copyright (C) 2000 WIDE Project. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. Neither the name of the project nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
*/ |
#ifndef _NETINET6_SCOPE6_VAR_H_ |
#define _NETINET6_SCOPE6_VAR_H_ |
#ifdef _KERNEL |
void scope6_ifattach __P((struct ifnet *)); |
int scope6_set __P((struct ifnet *, u_int32_t *)); |
int scope6_get __P((struct ifnet *, u_int32_t *)); |
void scope6_setdefault __P((struct ifnet *)); |
int scope6_get_default __P((u_int32_t *)); |
u_int32_t scope6_in6_addrscope __P((struct in6_addr *)); |
u_int32_t scope6_addr2default __P((struct in6_addr *)); |
#endif /* _KERNEL */ |
#endif /* _NETINET6_SCOPE6_VAR_H_ */ |
//pkgnet/tags/20230208/watt32/inc/netinet6/tcp6_var.h |
---|
0,0 → 1,91 |
/*!\file netinet6/tcp6_var.h |
* |
*/ |
/* |
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. Neither the name of the project nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
* |
* $FreeBSD: src/sys/netinet6/tcp6_var.h,v 1.5 2001/11/22 04:50:44 jlemon Exp $ |
*/ |
/* |
* Copyright (c) 1982, 1986, 1993, 1994, 1995 |
* The Regents of the University of California. All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. All advertising materials mentioning features or use of this software |
* must display the following acknowledgement: |
* This product includes software developed by the University of |
* California, Berkeley and its contributors. |
* 4. Neither the name of the University nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
* |
* @(#)tcp_var.h 8.4 (Berkeley) 5/24/95 |
* $FreeBSD: src/sys/netinet6/tcp6_var.h,v 1.5 2001/11/22 04:50:44 jlemon Exp $ |
*/ |
#ifndef _NETINET_TCP6_VAR_H_ |
#define _NETINET_TCP6_VAR_H_ |
#ifdef _KERNEL |
#ifdef SYSCTL_DECL |
SYSCTL_DECL(_net_inet6_tcp6); |
#endif |
extern int tcp_v6mssdflt; /* XXX */ |
struct ip6_hdr; |
void tcp6_ctlinput __P((int, struct sockaddr *, void *)); |
void tcp6_init __P((void)); |
int tcp6_input __P((struct mbuf **, int *, int)); |
struct rtentry *tcp_rtlookup6(struct in_conninfo *); |
extern struct pr_usrreqs tcp6_usrreqs; |
#endif /* _KERNEL */ |
#endif /* _NETINET_TCP6_VAR_H_ */ |
//pkgnet/tags/20230208/watt32/inc/netinet6/udp6_var.h |
---|
0,0 → 1,86 |
/*!\file netinet6/udp6_var.h |
* UDP in/out handling for IPv6. |
*/ |
/* |
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. Neither the name of the project nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
* |
* $FreeBSD: src/sys/netinet6/udp6_var.h,v 1.5 2001/09/12 08:37:55 julian Exp $ |
*/ |
/* |
* Copyright (c) 1982, 1986, 1989, 1993 |
* The Regents of the University of California. All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. All advertising materials mentioning features or use of this software |
* must display the following acknowledgement: |
* This product includes software developed by the University of |
* California, Berkeley and its contributors. |
* 4. Neither the name of the University nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
* |
* @(#)udp_var.h 8.1 (Berkeley) 6/10/93 |
*/ |
#ifndef _NETINET6_UDP6_VAR_H_ |
#define _NETINET6_UDP6_VAR_H_ |
#ifdef _KERNEL |
SYSCTL_DECL(_net_inet6_udp6); |
extern struct pr_usrreqs udp6_usrreqs; |
void udp6_ctlinput __P((int, struct sockaddr *, void *)); |
int udp6_input __P((struct mbuf **, int *, int)); |
int udp6_output __P((struct inpcb *inp, struct mbuf *m, |
struct sockaddr *addr, struct mbuf *control, |
struct thread *td)); |
#endif |
#endif /*_NETINET6_UDP6_VAR_H_*/ |