| 1 |
/* $NetBSD: ip6_input.c,v 1.137 2012/03/22 20:34:40 drochner Exp $ */ |
/* $NetBSD: ip6_input.c,v 1.140 2012/06/25 15:28:40 christos Exp $ */ |
| 2 |
/* $KAME: ip6_input.c,v 1.188 2001/03/29 05:34:31 itojun Exp $ */ |
/* $KAME: ip6_input.c,v 1.188 2001/03/29 05:34:31 itojun Exp $ */ |
| 3 |
|
|
| 4 |
/* |
/* |
| 62 |
*/ |
*/ |
| 63 |
|
|
| 64 |
#include <sys/cdefs.h> |
#include <sys/cdefs.h> |
| 65 |
__KERNEL_RCSID(0, "$NetBSD: ip6_input.c,v 1.137 2012/03/22 20:34:40 drochner Exp $"); |
__KERNEL_RCSID(0, "$NetBSD: ip6_input.c,v 1.140 2012/06/25 15:28:40 christos Exp $"); |
| 66 |
|
|
| 67 |
#include "opt_gateway.h" |
#include "opt_gateway.h" |
| 68 |
#include "opt_inet.h" |
#include "opt_inet.h" |
| 103 |
#include <netinet/ip_icmp.h> |
#include <netinet/ip_icmp.h> |
| 104 |
#endif /* INET */ |
#endif /* INET */ |
| 105 |
#include <netinet/ip6.h> |
#include <netinet/ip6.h> |
| 106 |
|
#include <netinet/portalgo.h> |
| 107 |
#include <netinet6/in6_var.h> |
#include <netinet6/in6_var.h> |
| 108 |
#include <netinet6/ip6_var.h> |
#include <netinet6/ip6_var.h> |
| 109 |
#include <netinet6/ip6_private.h> |
#include <netinet6/ip6_private.h> |
| 1097 |
SCM_OTIMESTAMP, SOL_SOCKET); |
SCM_OTIMESTAMP, SOL_SOCKET); |
| 1098 |
} else |
} else |
| 1099 |
#endif |
#endif |
| 1100 |
|
if ( in6p->in6p_socket->so_options & SO_TIMESTAMPNS |
| 1101 |
|
|| in6p->in6p_socket->so_options & SO_TIMESTAMPING) { |
| 1102 |
|
struct timespec ts; |
| 1103 |
|
|
| 1104 |
|
/* get timespec from m_tags */ |
| 1105 |
|
|
| 1106 |
|
*mp = sbcreatecontrol((void *) &ts, sizeof(ts), |
| 1107 |
|
SCM_TIMESPEC, SOL_SOCKET); |
| 1108 |
|
} else |
| 1109 |
*mp = sbcreatecontrol((void *) &tv, sizeof(tv), |
*mp = sbcreatecontrol((void *) &tv, sizeof(tv), |
| 1110 |
SCM_TIMESTAMP, SOL_SOCKET); |
SCM_TIMESTAMP, SOL_SOCKET); |
| 1111 |
if (*mp) |
if (*mp) |
| 1966 |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
CTL_NET, PF_INET6, IPPROTO_IPV6, |
| 1967 |
CTL_CREATE, CTL_EOL); |
CTL_CREATE, CTL_EOL); |
| 1968 |
#endif |
#endif |
| 1969 |
|
/* anonportalgo RFC6056 subtree */ |
| 1970 |
|
const struct sysctlnode *portalgo_node; |
| 1971 |
|
sysctl_createv(clog, 0, NULL, &portalgo_node, |
| 1972 |
|
CTLFLAG_PERMANENT, |
| 1973 |
|
CTLTYPE_NODE, "anonportalgo", |
| 1974 |
|
SYSCTL_DESCR("Anonymous port algorithm selection (RFC 6056)"), |
| 1975 |
|
NULL, 0, NULL, 0, |
| 1976 |
|
CTL_NET, PF_INET6, IPPROTO_IPV6, CTL_CREATE, CTL_EOL); |
| 1977 |
|
sysctl_createv(clog, 0, &portalgo_node, NULL, |
| 1978 |
|
CTLFLAG_PERMANENT, |
| 1979 |
|
CTLTYPE_STRING, "available", |
| 1980 |
|
SYSCTL_DESCR("available algorithms"), |
| 1981 |
|
sysctl_portalgo_available, 0, NULL, PORTALGO_MAXLEN, |
| 1982 |
|
CTL_CREATE, CTL_EOL); |
| 1983 |
|
sysctl_createv(clog, 0, &portalgo_node, NULL, |
| 1984 |
|
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
| 1985 |
|
CTLTYPE_STRING, "selected", |
| 1986 |
|
SYSCTL_DESCR("selected algorithm"), |
| 1987 |
|
sysctl_portalgo_selected6, 0, NULL, PORTALGO_MAXLEN, |
| 1988 |
|
CTL_CREATE, CTL_EOL); |
| 1989 |
|
sysctl_createv(clog, 0, NULL, NULL, |
| 1990 |
|
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
| 1991 |
|
CTLTYPE_INT, "neighborgcthresh", |
| 1992 |
|
SYSCTL_DESCR("Maximum number of entries in neighbor" |
| 1993 |
|
" cache"), |
| 1994 |
|
NULL, 1, &ip6_neighborgcthresh, 0, |
| 1995 |
|
CTL_NET, PF_INET6, IPPROTO_IPV6, |
| 1996 |
|
CTL_CREATE, CTL_EOL); |
| 1997 |
|
sysctl_createv(clog, 0, NULL, NULL, |
| 1998 |
|
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
| 1999 |
|
CTLTYPE_INT, "maxifprefixes", |
| 2000 |
|
SYSCTL_DESCR("Maximum number of prefixes created by" |
| 2001 |
|
" route advertisement per interface"), |
| 2002 |
|
NULL, 1, &ip6_maxifprefixes, 0, |
| 2003 |
|
CTL_NET, PF_INET6, IPPROTO_IPV6, |
| 2004 |
|
CTL_CREATE, CTL_EOL); |
| 2005 |
|
sysctl_createv(clog, 0, NULL, NULL, |
| 2006 |
|
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
| 2007 |
|
CTLTYPE_INT, "maxifdefrouters", |
| 2008 |
|
SYSCTL_DESCR("Maximum number of default routers created" |
| 2009 |
|
" by route advertisement per interface"), |
| 2010 |
|
NULL, 1, &ip6_maxifdefrouters, 0, |
| 2011 |
|
CTL_NET, PF_INET6, IPPROTO_IPV6, |
| 2012 |
|
CTL_CREATE, CTL_EOL); |
| 2013 |
|
sysctl_createv(clog, 0, NULL, NULL, |
| 2014 |
|
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
| 2015 |
|
CTLTYPE_INT, "maxdynroutes", |
| 2016 |
|
SYSCTL_DESCR("Maximum number of routes created via" |
| 2017 |
|
" redirect"), |
| 2018 |
|
NULL, 1, &ip6_maxdynroutes, 0, |
| 2019 |
|
CTL_NET, PF_INET6, IPPROTO_IPV6, |
| 2020 |
|
CTL_CREATE, CTL_EOL); |
| 2021 |
} |
} |
| 2022 |
|
|
| 2023 |
void |
void |