Changeset View
Changeset View
Standalone View
Standalone View
sys/netinet6/icmp6.c
Show First 20 Lines • Show All 107 Lines • ▼ Show 20 Lines | |||||
#include <netinet6/in6_ifattach.h> | #include <netinet6/in6_ifattach.h> | ||||
#include <netinet6/in6_pcb.h> | #include <netinet6/in6_pcb.h> | ||||
#include <netinet6/ip6_var.h> | #include <netinet6/ip6_var.h> | ||||
#include <netinet6/scope6_var.h> | #include <netinet6/scope6_var.h> | ||||
#include <netinet6/mld6_var.h> | #include <netinet6/mld6_var.h> | ||||
#include <netinet6/nd6.h> | #include <netinet6/nd6.h> | ||||
#include <netinet6/send.h> | #include <netinet6/send.h> | ||||
extern ipproto_ctlinput_t *ip6_ctlprotox[]; | extern ip6proto_ctlinput_t *ip6_ctlprotox[]; | ||||
VNET_PCPUSTAT_DEFINE(struct icmp6stat, icmp6stat); | VNET_PCPUSTAT_DEFINE(struct icmp6stat, icmp6stat); | ||||
VNET_PCPUSTAT_SYSINIT(icmp6stat); | VNET_PCPUSTAT_SYSINIT(icmp6stat); | ||||
#ifdef VIMAGE | #ifdef VIMAGE | ||||
VNET_PCPUSTAT_SYSUNINIT(icmp6stat); | VNET_PCPUSTAT_SYSUNINIT(icmp6stat); | ||||
#endif /* VIMAGE */ | #endif /* VIMAGE */ | ||||
▲ Show 20 Lines • Show All 956 Lines • ▼ Show 20 Lines | /* Detect the upper level protocol */ | ||||
if (icmp6type == ICMP6_PACKET_TOO_BIG) { | if (icmp6type == ICMP6_PACKET_TOO_BIG) { | ||||
notifymtu = ntohl(icmp6->icmp6_mtu); | notifymtu = ntohl(icmp6->icmp6_mtu); | ||||
ip6cp.ip6c_cmdarg = (void *)¬ifymtu; | ip6cp.ip6c_cmdarg = (void *)¬ifymtu; | ||||
icmp6_mtudisc_update(&ip6cp, 1); /*XXX*/ | icmp6_mtudisc_update(&ip6cp, 1); /*XXX*/ | ||||
} | } | ||||
if (ip6_ctlprotox[nxt] != NULL) | if (ip6_ctlprotox[nxt] != NULL) | ||||
ip6_ctlprotox[nxt](code, (struct sockaddr *)&icmp6dst, | ip6_ctlprotox[nxt](code, &icmp6dst, &ip6cp); | ||||
&ip6cp); | |||||
} | } | ||||
*mp = m; | *mp = m; | ||||
return (0); | return (0); | ||||
freeit: | freeit: | ||||
m_freem(m); | m_freem(m); | ||||
*mp = NULL; | *mp = NULL; | ||||
return (-1); | return (-1); | ||||
▲ Show 20 Lines • Show All 1,635 Lines • Show Last 20 Lines |