version 1.64.2.3, 2004/09/21 13:37:34 |
version 1.70, 2003/12/04 19:38:24 |
|
|
if (ip6_forward_rt.ro_rt != NULL && |
if (ip6_forward_rt.ro_rt != NULL && |
(ip6_forward_rt.ro_rt->rt_flags & RTF_UP) != 0 && |
(ip6_forward_rt.ro_rt->rt_flags & RTF_UP) != 0 && |
IN6_ARE_ADDR_EQUAL(&ip6->ip6_dst, |
IN6_ARE_ADDR_EQUAL(&ip6->ip6_dst, |
&((struct sockaddr_in6 *)(&ip6_forward_rt.ro_dst))->sin6_addr)) |
&((struct sockaddr_in6 *)(&ip6_forward_rt.ro_dst))->sin6_addr)) |
ip6stat.ip6s_forward_cachehit++; |
ip6stat.ip6s_forward_cachehit++; |
else { |
else { |
struct sockaddr_in6 *dst6; |
struct sockaddr_in6 *dst6; |
|
|
*/ |
*/ |
#if defined(NFAITH) && 0 < NFAITH |
#if defined(NFAITH) && 0 < NFAITH |
if (ip6_keepfaith) { |
if (ip6_keepfaith) { |
if (ip6_forward_rt.ro_rt && ip6_forward_rt.ro_rt->rt_ifp && |
if (ip6_forward_rt.ro_rt && ip6_forward_rt.ro_rt->rt_ifp |
ip6_forward_rt.ro_rt->rt_ifp->if_type == IFT_FAITH) { |
&& ip6_forward_rt.ro_rt->rt_ifp->if_type == IFT_FAITH) { |
/* XXX do we need more sanity checks? */ |
/* XXX do we need more sanity checks? */ |
ours = 1; |
ours = 1; |
deliverifp = ip6_forward_rt.ro_rt->rt_ifp; /* faith */ |
deliverifp = ip6_forward_rt.ro_rt->rt_ifp; /* faith */ |
Line 997 ip6_savecontrol(in6p, mp, ip6, m) |
|
Line 997 ip6_savecontrol(in6p, mp, ip6, m) |
|
struct ip6_hdr *ip6; |
struct ip6_hdr *ip6; |
struct mbuf *m; |
struct mbuf *m; |
{ |
{ |
|
struct proc *p = curproc; /* XXX */ |
|
int privileged; |
|
|
|
privileged = 0; |
|
if (p && !suser(p->p_ucred, &p->p_acflag)) |
|
privileged++; |
|
|
#ifdef SO_TIMESTAMP |
#ifdef SO_TIMESTAMP |
if (in6p->in6p_socket->so_options & SO_TIMESTAMP) { |
if (in6p->in6p_socket->so_options & SO_TIMESTAMP) { |
Line 1049 ip6_savecontrol(in6p, mp, ip6, m) |
|
Line 1055 ip6_savecontrol(in6p, mp, ip6, m) |
|
/* IN6P_NEXTHOP - for outgoing packet only */ |
/* IN6P_NEXTHOP - for outgoing packet only */ |
|
|
/* |
/* |
* IPV6_HOPOPTS socket option. Recall that we required super-user |
* IPV6_HOPOPTS socket option. We require super-user privilege |
* privilege for the option (see ip6_ctloutput), but it might be too |
* for the option, but it might be too strict, since there might |
* strict, since there might be some hop-by-hop options which can be |
* be some hop-by-hop options which can be returned to normal user. |
* returned to normal user. |
* See RFC 2292 section 6. |
* See also RFC 2292 section 6. |
|
*/ |
*/ |
if ((in6p->in6p_flags & IN6P_HOPOPTS) != 0) { |
if ((in6p->in6p_flags & IN6P_HOPOPTS) != 0 && privileged) { |
/* |
/* |
* Check if a hop-by-hop options header is contatined in the |
* Check if a hop-by-hop options header is contatined in the |
* received packet, and if so, store the options as ancillary |
* received packet, and if so, store the options as ancillary |
Line 1150 ip6_savecontrol(in6p, mp, ip6, m) |
|
Line 1155 ip6_savecontrol(in6p, mp, ip6, m) |
|
if (!in6p->in6p_flags & IN6P_DSTOPTS) |
if (!in6p->in6p_flags & IN6P_DSTOPTS) |
break; |
break; |
|
|
|
/* |
|
* We also require super-user privilege for |
|
* the option. |
|
* See the comments on IN6_HOPOPTS. |
|
*/ |
|
if (!privileged) |
|
break; |
|
|
*mp = sbcreatecontrol((caddr_t)ip6e, elen, |
*mp = sbcreatecontrol((caddr_t)ip6e, elen, |
IPV6_DSTOPTS, IPPROTO_IPV6); |
IPV6_DSTOPTS, IPPROTO_IPV6); |
if (*mp) |
if (*mp) |
Line 1425 u_char inet6ctlerrmap[PRC_NCMDS] = { |
|
Line 1438 u_char inet6ctlerrmap[PRC_NCMDS] = { |
|
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") |
{ |
{ |
|
|
sysctl_createv(clog, 0, NULL, NULL, |
sysctl_createv(SYSCTL_PERMANENT, |
CTLFLAG_PERMANENT, |
|
CTLTYPE_NODE, "net", NULL, |
CTLTYPE_NODE, "net", NULL, |
NULL, 0, NULL, 0, |
NULL, 0, NULL, 0, |
CTL_NET, CTL_EOL); |
CTL_NET, CTL_EOL); |
sysctl_createv(clog, 0, NULL, NULL, |
sysctl_createv(SYSCTL_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(SYSCTL_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(SYSCTL_PERMANENT|SYSCTL_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(SYSCTL_PERMANENT|SYSCTL_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(SYSCTL_PERMANENT|SYSCTL_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); |
#ifdef notyet |
#ifdef notyet |
sysctl_createv(clog, 0, NULL, NULL, |
sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE, |
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
|
CTLTYPE_INT, "mtu", NULL, |
CTLTYPE_INT, "mtu", NULL, |
NULL, 0, &, 0, |
NULL, 0, &, 0, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
IPV6CTL_DEFMTU, CTL_EOL); |
IPV6CTL_DEFMTU, CTL_EOL); |
#endif |
#endif |
#ifdef __no_idea__ |
#ifdef __no_idea__ |
sysctl_createv(clog, 0, NULL, NULL, |
sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE, |
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
|
CTLTYPE_INT, "forwsrcrt", NULL, |
CTLTYPE_INT, "forwsrcrt", NULL, |
NULL, 0, &?, 0, |
NULL, 0, &?, 0, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
IPV6CTL_FORWSRCRT, CTL_EOL); |
IPV6CTL_FORWSRCRT, CTL_EOL); |
sysctl_createv(clog, 0, NULL, NULL, |
sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE, |
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
|
CTLTYPE_STRUCT, "stats", NULL, |
CTLTYPE_STRUCT, "stats", NULL, |
NULL, 0, &?, sizeof(?), |
NULL, 0, &?, sizeof(?), |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
IPV6CTL_STATS, CTL_EOL); |
IPV6CTL_STATS, CTL_EOL); |
sysctl_createv(clog, 0, NULL, NULL, |
sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE, |
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
|
CTLTYPE_STRUCT, "mrtstats", NULL, |
CTLTYPE_STRUCT, "mrtstats", NULL, |
NULL, 0, &?, sizeof(?), |
NULL, 0, &?, sizeof(?), |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
IPV6CTL_MRTSTATS, CTL_EOL); |
IPV6CTL_MRTSTATS, CTL_EOL); |
sysctl_createv(clog, 0, NULL, NULL, |
sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE, |
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
|
CTLTYPE_?, "mrtproto", NULL, |
CTLTYPE_?, "mrtproto", NULL, |
NULL, 0, &?, sizeof(?), |
NULL, 0, &?, sizeof(?), |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
IPV6CTL_MRTPROTO, CTL_EOL); |
IPV6CTL_MRTPROTO, CTL_EOL); |
#endif |
#endif |
sysctl_createv(clog, 0, NULL, NULL, |
sysctl_createv(SYSCTL_PERMANENT|SYSCTL_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); |
#ifdef __no_idea__ |
#ifdef __no_idea__ |
sysctl_createv(clog, 0, NULL, NULL, |
sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE, |
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
|
CTLTYPE_INT, "sourcecheck", NULL, |
CTLTYPE_INT, "sourcecheck", NULL, |
NULL, 0, &?, 0, |
NULL, 0, &?, 0, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
IPV6CTL_SOURCECHECK, CTL_EOL); |
IPV6CTL_SOURCECHECK, CTL_EOL); |
sysctl_createv(clog, 0, NULL, NULL, |
sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE, |
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
|
CTLTYPE_INT, "sourcecheck_logint", NULL, |
CTLTYPE_INT, "sourcecheck_logint", NULL, |
NULL, 0, &?, 0, |
NULL, 0, &?, 0, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
IPV6CTL_SOURCECHECK_LOGINT, CTL_EOL); |
IPV6CTL_SOURCECHECK_LOGINT, CTL_EOL); |
#endif |
#endif |
sysctl_createv(clog, 0, NULL, NULL, |
sysctl_createv(SYSCTL_PERMANENT|SYSCTL_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(SYSCTL_PERMANENT|SYSCTL_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(SYSCTL_PERMANENT|SYSCTL_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(SYSCTL_PERMANENT|SYSCTL_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(SYSCTL_PERMANENT|SYSCTL_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(SYSCTL_PERMANENT|SYSCTL_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(SYSCTL_PERMANENT|SYSCTL_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(SYSCTL_PERMANENT|SYSCTL_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(SYSCTL_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(SYSCTL_PERMANENT|SYSCTL_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); |
sysctl_createv(clog, 0, NULL, NULL, |
sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE, |
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
|
CTLTYPE_INT, "rr_prune", NULL, |
CTLTYPE_INT, "rr_prune", NULL, |
NULL, 0, &ip6_rr_prune, 0, |
NULL, 0, &ip6_rr_prune, 0, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
IPV6CTL_RR_PRUNE, CTL_EOL); |
IPV6CTL_RR_PRUNE, CTL_EOL); |
sysctl_createv(clog, 0, NULL, NULL, |
sysctl_createv(SYSCTL_PERMANENT |
CTLFLAG_PERMANENT |
|
#ifndef INET6_BINDV6ONLY |
#ifndef INET6_BINDV6ONLY |
|CTLFLAG_READWRITE, |
|SYSCTL_READWRITE, |
#endif |
#endif |
CTLTYPE_INT, "v6only", |
CTLTYPE_INT, "v6only", NULL, |
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(SYSCTL_PERMANENT|SYSCTL_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(SYSCTL_PERMANENT|SYSCTL_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(SYSCTL_PERMANENT|SYSCTL_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(SYSCTL_PERMANENT|SYSCTL_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(SYSCTL_PERMANENT|SYSCTL_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); |