version 1.73, 2004/03/24 15:34:54 |
version 1.73.2.3, 2007/06/04 19:24:35 |
Line 1015 ip6_savecontrol(in6p, mp, ip6, m) |
|
Line 1015 ip6_savecontrol(in6p, mp, ip6, m) |
|
mp = &(*mp)->m_next; |
mp = &(*mp)->m_next; |
} |
} |
#endif |
#endif |
|
|
|
/* some OSes call this logic with IPv4 packet, for SO_TIMESTAMP */ |
|
if ((ip6->ip6_vfc & IPV6_VERSION_MASK) != IPV6_VERSION) |
|
return; |
|
|
if (in6p->in6p_flags & IN6P_RECVDSTADDR) { |
if (in6p->in6p_flags & IN6P_RECVDSTADDR) { |
*mp = sbcreatecontrol((caddr_t) &ip6->ip6_dst, |
*mp = sbcreatecontrol((caddr_t) &ip6->ip6_dst, |
sizeof(struct in6_addr), IPV6_RECVDSTADDR, IPPROTO_IPV6); |
sizeof(struct in6_addr), IPV6_RECVDSTADDR, IPPROTO_IPV6); |
Line 1435 u_char inet6ctlerrmap[PRC_NCMDS] = { |
|
Line 1440 u_char inet6ctlerrmap[PRC_NCMDS] = { |
|
ENOPROTOOPT |
ENOPROTOOPT |
}; |
}; |
|
|
|
static int |
|
sysctl_net_inet6_ip6_rht0(SYSCTLFN_ARGS) |
|
{ |
|
int error, tmp; |
|
struct sysctlnode node; |
|
|
|
node = *rnode; |
|
tmp = ip6_rht0; |
|
node.sysctl_data = &tmp; |
|
error = sysctl_lookup(SYSCTLFN_CALL(&node)); |
|
if (error || newp == NULL) |
|
return error; |
|
|
|
switch (tmp) { |
|
case -1: /* disable processing */ |
|
case 0: /* disable for host, enable for router */ |
|
case 1: /* enable for all */ |
|
break; |
|
default: |
|
return EINVAL; |
|
} |
|
ip6_rht0 = tmp; |
|
return 0; |
|
} |
|
|
SYSCTL_SETUP(sysctl_net_inet6_ip6_setup, "sysctl net.inet6.ip6 subtree setup") |
SYSCTL_SETUP(sysctl_net_inet6_ip6_setup, "sysctl net.inet6.ip6 subtree setup") |
{ |
{ |
|
|
Line 1445 SYSCTL_SETUP(sysctl_net_inet6_ip6_setup, |
|
Line 1475 SYSCTL_SETUP(sysctl_net_inet6_ip6_setup, |
|
CTL_NET, CTL_EOL); |
CTL_NET, CTL_EOL); |
sysctl_createv(clog, 0, NULL, NULL, |
sysctl_createv(clog, 0, NULL, NULL, |
CTLFLAG_PERMANENT, |
CTLFLAG_PERMANENT, |
CTLTYPE_NODE, "inet6", NULL, |
CTLTYPE_NODE, "inet6", |
|
SYSCTL_DESCR("PF_INET6 related settings"), |
NULL, 0, NULL, 0, |
NULL, 0, NULL, 0, |
CTL_NET, PF_INET6, CTL_EOL); |
CTL_NET, PF_INET6, CTL_EOL); |
sysctl_createv(clog, 0, NULL, NULL, |
sysctl_createv(clog, 0, NULL, NULL, |
CTLFLAG_PERMANENT, |
CTLFLAG_PERMANENT, |
CTLTYPE_NODE, "ip6", NULL, |
CTLTYPE_NODE, "ip6", |
|
SYSCTL_DESCR("IPv6 related settings"), |
NULL, 0, NULL, 0, |
NULL, 0, NULL, 0, |
CTL_NET, PF_INET6, IPPROTO_IPV6, CTL_EOL); |
CTL_NET, PF_INET6, IPPROTO_IPV6, CTL_EOL); |
|
|
sysctl_createv(clog, 0, NULL, NULL, |
sysctl_createv(clog, 0, NULL, NULL, |
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLTYPE_INT, "forwarding", NULL, |
CTLTYPE_INT, "forwarding", |
|
SYSCTL_DESCR("Enable forwarding of INET6 datagrams"), |
NULL, 0, &ip6_forwarding, 0, |
NULL, 0, &ip6_forwarding, 0, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
IPV6CTL_FORWARDING, CTL_EOL); |
IPV6CTL_FORWARDING, CTL_EOL); |
sysctl_createv(clog, 0, NULL, NULL, |
sysctl_createv(clog, 0, NULL, NULL, |
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLTYPE_INT, "redirect", NULL, |
CTLTYPE_INT, "redirect", |
|
SYSCTL_DESCR("Enable sending of ICMPv6 redirect messages"), |
NULL, 0, &ip6_sendredirects, 0, |
NULL, 0, &ip6_sendredirects, 0, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
IPV6CTL_SENDREDIRECTS, CTL_EOL); |
IPV6CTL_SENDREDIRECTS, CTL_EOL); |
sysctl_createv(clog, 0, NULL, NULL, |
sysctl_createv(clog, 0, NULL, NULL, |
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLTYPE_INT, "hlim", NULL, |
CTLTYPE_INT, "hlim", |
|
SYSCTL_DESCR("Hop limit for an INET6 datagram"), |
NULL, 0, &ip6_defhlim, 0, |
NULL, 0, &ip6_defhlim, 0, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
IPV6CTL_DEFHLIM, CTL_EOL); |
IPV6CTL_DEFHLIM, CTL_EOL); |
Line 1508 SYSCTL_SETUP(sysctl_net_inet6_ip6_setup, |
|
Line 1543 SYSCTL_SETUP(sysctl_net_inet6_ip6_setup, |
|
#endif |
#endif |
sysctl_createv(clog, 0, NULL, NULL, |
sysctl_createv(clog, 0, NULL, NULL, |
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLTYPE_INT, "maxfragpackets", NULL, |
CTLTYPE_INT, "maxfragpackets", |
|
SYSCTL_DESCR("Maximum number of fragments to buffer " |
|
"for reassembly"), |
NULL, 0, &ip6_maxfragpackets, 0, |
NULL, 0, &ip6_maxfragpackets, 0, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
IPV6CTL_MAXFRAGPACKETS, CTL_EOL); |
IPV6CTL_MAXFRAGPACKETS, CTL_EOL); |
Line 1528 SYSCTL_SETUP(sysctl_net_inet6_ip6_setup, |
|
Line 1565 SYSCTL_SETUP(sysctl_net_inet6_ip6_setup, |
|
#endif |
#endif |
sysctl_createv(clog, 0, NULL, NULL, |
sysctl_createv(clog, 0, NULL, NULL, |
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLTYPE_INT, "accept_rtadv", NULL, |
CTLTYPE_INT, "accept_rtadv", |
|
SYSCTL_DESCR("Accept router advertisements"), |
NULL, 0, &ip6_accept_rtadv, 0, |
NULL, 0, &ip6_accept_rtadv, 0, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
IPV6CTL_ACCEPT_RTADV, CTL_EOL); |
IPV6CTL_ACCEPT_RTADV, CTL_EOL); |
sysctl_createv(clog, 0, NULL, NULL, |
sysctl_createv(clog, 0, NULL, NULL, |
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLTYPE_INT, "keepfaith", NULL, |
CTLTYPE_INT, "keepfaith", |
|
SYSCTL_DESCR("Activate faith interface"), |
NULL, 0, &ip6_keepfaith, 0, |
NULL, 0, &ip6_keepfaith, 0, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
IPV6CTL_KEEPFAITH, CTL_EOL); |
IPV6CTL_KEEPFAITH, CTL_EOL); |
sysctl_createv(clog, 0, NULL, NULL, |
sysctl_createv(clog, 0, NULL, NULL, |
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLTYPE_INT, "log_interval", NULL, |
CTLTYPE_INT, "log_interval", |
|
SYSCTL_DESCR("Minumum interval between logging " |
|
"unroutable packets"), |
NULL, 0, &ip6_log_interval, 0, |
NULL, 0, &ip6_log_interval, 0, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
IPV6CTL_LOG_INTERVAL, CTL_EOL); |
IPV6CTL_LOG_INTERVAL, CTL_EOL); |
sysctl_createv(clog, 0, NULL, NULL, |
sysctl_createv(clog, 0, NULL, NULL, |
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLTYPE_INT, "hdrnestlimit", NULL, |
CTLTYPE_INT, "hdrnestlimit", |
|
SYSCTL_DESCR("Maximum number of nested IPv6 headers"), |
NULL, 0, &ip6_hdrnestlimit, 0, |
NULL, 0, &ip6_hdrnestlimit, 0, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
IPV6CTL_HDRNESTLIMIT, CTL_EOL); |
IPV6CTL_HDRNESTLIMIT, CTL_EOL); |
sysctl_createv(clog, 0, NULL, NULL, |
sysctl_createv(clog, 0, NULL, NULL, |
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLTYPE_INT, "dad_count", NULL, |
CTLTYPE_INT, "dad_count", |
|
SYSCTL_DESCR("Number of Duplicate Address Detection " |
|
"probes to send"), |
NULL, 0, &ip6_dad_count, 0, |
NULL, 0, &ip6_dad_count, 0, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
IPV6CTL_DAD_COUNT, CTL_EOL); |
IPV6CTL_DAD_COUNT, CTL_EOL); |
sysctl_createv(clog, 0, NULL, NULL, |
sysctl_createv(clog, 0, NULL, NULL, |
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLTYPE_INT, "auto_flowlabel", NULL, |
CTLTYPE_INT, "auto_flowlabel", |
|
SYSCTL_DESCR("Assign random IPv6 flow labels"), |
NULL, 0, &ip6_auto_flowlabel, 0, |
NULL, 0, &ip6_auto_flowlabel, 0, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
IPV6CTL_AUTO_FLOWLABEL, CTL_EOL); |
IPV6CTL_AUTO_FLOWLABEL, CTL_EOL); |
sysctl_createv(clog, 0, NULL, NULL, |
sysctl_createv(clog, 0, NULL, NULL, |
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLTYPE_INT, "defmcasthlim", NULL, |
CTLTYPE_INT, "defmcasthlim", |
|
SYSCTL_DESCR("Default multicast hop limit"), |
NULL, 0, &ip6_defmcasthlim, 0, |
NULL, 0, &ip6_defmcasthlim, 0, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
IPV6CTL_DEFMCASTHLIM, CTL_EOL); |
IPV6CTL_DEFMCASTHLIM, CTL_EOL); |
#if NGIF > 0 |
#if NGIF > 0 |
sysctl_createv(clog, 0, NULL, NULL, |
sysctl_createv(clog, 0, NULL, NULL, |
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLTYPE_INT, "gifhlim", NULL, |
CTLTYPE_INT, "gifhlim", |
|
SYSCTL_DESCR("Default hop limit for a gif tunnel datagram"), |
NULL, 0, &ip6_gif_hlim, 0, |
NULL, 0, &ip6_gif_hlim, 0, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
IPV6CTL_GIF_HLIM, CTL_EOL); |
IPV6CTL_GIF_HLIM, CTL_EOL); |
#endif /* NGIF */ |
#endif /* NGIF */ |
sysctl_createv(clog, 0, NULL, NULL, |
sysctl_createv(clog, 0, NULL, NULL, |
CTLFLAG_PERMANENT, |
CTLFLAG_PERMANENT, |
CTLTYPE_STRING, "kame_version", NULL, |
CTLTYPE_STRING, "kame_version", |
|
SYSCTL_DESCR("KAME Version"), |
NULL, 0, __KAME_VERSION, 0, |
NULL, 0, __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, |
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLTYPE_INT, "use_deprecated", NULL, |
CTLTYPE_INT, "use_deprecated", |
|
SYSCTL_DESCR("Allow use of deprecated addresses as " |
|
"source addresses"), |
NULL, 0, &ip6_use_deprecated, 0, |
NULL, 0, &ip6_use_deprecated, 0, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
IPV6CTL_USE_DEPRECATED, CTL_EOL); |
IPV6CTL_USE_DEPRECATED, CTL_EOL); |
Line 1599 SYSCTL_SETUP(sysctl_net_inet6_ip6_setup, |
|
Line 1649 SYSCTL_SETUP(sysctl_net_inet6_ip6_setup, |
|
#ifndef INET6_BINDV6ONLY |
#ifndef INET6_BINDV6ONLY |
|CTLFLAG_READWRITE, |
|CTLFLAG_READWRITE, |
#endif |
#endif |
CTLTYPE_INT, "v6only", NULL, |
CTLTYPE_INT, "v6only", |
|
SYSCTL_DESCR("Disallow PF_INET6 sockets from connecting " |
|
"to PF_INET sockets"), |
NULL, 0, &ip6_v6only, 0, |
NULL, 0, &ip6_v6only, 0, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
IPV6CTL_V6ONLY, CTL_EOL); |
IPV6CTL_V6ONLY, CTL_EOL); |
sysctl_createv(clog, 0, NULL, NULL, |
sysctl_createv(clog, 0, NULL, NULL, |
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLTYPE_INT, "anonportmin", NULL, |
CTLTYPE_INT, "anonportmin", |
|
SYSCTL_DESCR("Lowest ephemeral port number to assign"), |
sysctl_net_inet_ip_ports, 0, &ip6_anonportmin, 0, |
sysctl_net_inet_ip_ports, 0, &ip6_anonportmin, 0, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
IPV6CTL_ANONPORTMIN, CTL_EOL); |
IPV6CTL_ANONPORTMIN, CTL_EOL); |
sysctl_createv(clog, 0, NULL, NULL, |
sysctl_createv(clog, 0, NULL, NULL, |
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLTYPE_INT, "anonportmax", NULL, |
CTLTYPE_INT, "anonportmax", |
|
SYSCTL_DESCR("Highest ephemeral port number to assign"), |
sysctl_net_inet_ip_ports, 0, &ip6_anonportmax, 0, |
sysctl_net_inet_ip_ports, 0, &ip6_anonportmax, 0, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
IPV6CTL_ANONPORTMAX, CTL_EOL); |
IPV6CTL_ANONPORTMAX, CTL_EOL); |
#ifndef IPNOPRIVPORTS |
#ifndef IPNOPRIVPORTS |
sysctl_createv(clog, 0, NULL, NULL, |
sysctl_createv(clog, 0, NULL, NULL, |
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLTYPE_INT, "lowportmin", NULL, |
CTLTYPE_INT, "lowportmin", |
|
SYSCTL_DESCR("Lowest privileged ephemeral port number " |
|
"to assign"), |
sysctl_net_inet_ip_ports, 0, &ip6_lowportmin, 0, |
sysctl_net_inet_ip_ports, 0, &ip6_lowportmin, 0, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
IPV6CTL_LOWPORTMIN, CTL_EOL); |
IPV6CTL_LOWPORTMIN, CTL_EOL); |
sysctl_createv(clog, 0, NULL, NULL, |
sysctl_createv(clog, 0, NULL, NULL, |
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLTYPE_INT, "lowportmax", NULL, |
CTLTYPE_INT, "lowportmax", |
|
SYSCTL_DESCR("Highest privileged ephemeral port number " |
|
"to assign"), |
sysctl_net_inet_ip_ports, 0, &ip6_lowportmax, 0, |
sysctl_net_inet_ip_ports, 0, &ip6_lowportmax, 0, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
IPV6CTL_LOWPORTMAX, CTL_EOL); |
IPV6CTL_LOWPORTMAX, CTL_EOL); |
#endif /* IPNOPRIVPORTS */ |
#endif /* IPNOPRIVPORTS */ |
sysctl_createv(clog, 0, NULL, NULL, |
sysctl_createv(clog, 0, NULL, NULL, |
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLTYPE_INT, "maxfrags", NULL, |
CTLTYPE_INT, "maxfrags", |
|
SYSCTL_DESCR("Maximum fragments in reassembly queue"), |
NULL, 0, &ip6_maxfrags, 0, |
NULL, 0, &ip6_maxfrags, 0, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
IPV6CTL_MAXFRAGS, CTL_EOL); |
IPV6CTL_MAXFRAGS, CTL_EOL); |
|
sysctl_createv(clog, 0, NULL, NULL, |
|
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
|
CTLTYPE_INT, "rht0", |
|
SYSCTL_DESCR("Processing of routing header type 0 (IPv6)"), |
|
sysctl_net_inet6_ip6_rht0, 0, &ip6_rht0, 0, |
|
CTL_NET, PF_INET6, IPPROTO_IPV6, |
|
CTL_CREATE, CTL_EOL); |
} |
} |