| version 1.77, 2004/12/04 16:10:25 |
version 1.78, 2005/05/29 21:43:51 |
| Line 150 static struct mbuf *ip6_pullexthdr __P(( |
|
| Line 150 static struct mbuf *ip6_pullexthdr __P(( |
|
| void |
void |
| ip6_init() |
ip6_init() |
| { |
{ |
| struct ip6protosw *pr; |
const struct ip6protosw *pr; |
| int i; |
int i; |
| |
|
| pr = (struct ip6protosw *)pffindproto(PF_INET6, IPPROTO_RAW, SOCK_RAW); |
pr = (const struct ip6protosw *)pffindproto(PF_INET6, IPPROTO_RAW, SOCK_RAW); |
| if (pr == 0) |
if (pr == 0) |
| panic("ip6_init"); |
panic("ip6_init"); |
| for (i = 0; i < IPPROTO_MAX; i++) |
for (i = 0; i < IPPROTO_MAX; i++) |
| ip6_protox[i] = pr - inet6sw; |
ip6_protox[i] = pr - inet6sw; |
| for (pr = (struct ip6protosw *)inet6domain.dom_protosw; |
for (pr = (const struct ip6protosw *)inet6domain.dom_protosw; |
| pr < (struct ip6protosw *)inet6domain.dom_protoswNPROTOSW; pr++) |
pr < (const struct ip6protosw *)inet6domain.dom_protoswNPROTOSW; pr++) |
| if (pr->pr_domain->dom_family == PF_INET6 && |
if (pr->pr_domain->dom_family == PF_INET6 && |
| pr->pr_protocol && pr->pr_protocol != IPPROTO_RAW) |
pr->pr_protocol && pr->pr_protocol != IPPROTO_RAW) |
| ip6_protox[pr->pr_protocol] = pr - inet6sw; |
ip6_protox[pr->pr_protocol] = pr - inet6sw; |
| Line 1059 ip6_savecontrol(in6p, mp, ip6, m) |
|
| Line 1059 ip6_savecontrol(in6p, mp, ip6, m) |
|
| * just after the IPv6 header, which fact is assured through |
* just after the IPv6 header, which fact is assured through |
| * the IPv6 input processing. |
* the IPv6 input processing. |
| */ |
*/ |
| struct ip6_hdr *ip6 = mtod(m, struct ip6_hdr *); |
struct ip6_hdr *xip6 = mtod(m, struct ip6_hdr *); |
| if (ip6->ip6_nxt == IPPROTO_HOPOPTS) { |
if (xip6->ip6_nxt == IPPROTO_HOPOPTS) { |
| struct ip6_hbh *hbh; |
struct ip6_hbh *hbh; |
| int hbhlen; |
int hbhlen; |
| struct mbuf *ext; |
struct mbuf *ext; |
| |
|
| ext = ip6_pullexthdr(m, sizeof(struct ip6_hdr), |
ext = ip6_pullexthdr(m, sizeof(struct ip6_hdr), |
| ip6->ip6_nxt); |
xip6->ip6_nxt); |
| if (ext == NULL) { |
if (ext == NULL) { |
| ip6stat.ip6s_tooshort++; |
ip6stat.ip6s_tooshort++; |
| return; |
return; |
| Line 1095 ip6_savecontrol(in6p, mp, ip6, m) |
|
| Line 1095 ip6_savecontrol(in6p, mp, ip6, m) |
|
| |
|
| /* IPV6_DSTOPTS and IPV6_RTHDR socket options */ |
/* IPV6_DSTOPTS and IPV6_RTHDR socket options */ |
| if (in6p->in6p_flags & (IN6P_DSTOPTS | IN6P_RTHDR)) { |
if (in6p->in6p_flags & (IN6P_DSTOPTS | IN6P_RTHDR)) { |
| struct ip6_hdr *ip6 = mtod(m, struct ip6_hdr *); |
struct ip6_hdr *xip6 = mtod(m, struct ip6_hdr *); |
| int nxt = ip6->ip6_nxt, off = sizeof(struct ip6_hdr); |
int nxt = xip6->ip6_nxt, off = sizeof(struct ip6_hdr); |
| |
|
| /* |
/* |
| * Search for destination options headers or routing |
* Search for destination options headers or routing |
| Line 1580 SYSCTL_SETUP(sysctl_net_inet6_ip6_setup, |
|
| Line 1580 SYSCTL_SETUP(sysctl_net_inet6_ip6_setup, |
|
| CTLFLAG_PERMANENT, |
CTLFLAG_PERMANENT, |
| CTLTYPE_STRING, "kame_version", |
CTLTYPE_STRING, "kame_version", |
| SYSCTL_DESCR("KAME Version"), |
SYSCTL_DESCR("KAME Version"), |
| NULL, 0, __KAME_VERSION, 0, |
NULL, 0, __UNCONST(__KAME_VERSION), 0, |
| CTL_NET, PF_INET6, IPPROTO_IPV6, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
| IPV6CTL_KAME_VERSION, CTL_EOL); |
IPV6CTL_KAME_VERSION, CTL_EOL); |
| sysctl_createv(clog, 0, NULL, NULL, |
sysctl_createv(clog, 0, NULL, NULL, |