Changeset View
Changeset View
Standalone View
Standalone View
sys/netinet/udp_usrreq.c
Show First 20 Lines • Show All 65 Lines • ▼ Show 20 Lines | |||||
#include <sys/syslog.h> | #include <sys/syslog.h> | ||||
#include <sys/systm.h> | #include <sys/systm.h> | ||||
#include <vm/uma.h> | #include <vm/uma.h> | ||||
#include <net/if.h> | #include <net/if.h> | ||||
#include <net/if_var.h> | #include <net/if_var.h> | ||||
#include <net/route.h> | #include <net/route.h> | ||||
#include <net/route/nhop.h> | |||||
#include <net/rss_config.h> | #include <net/rss_config.h> | ||||
#include <netinet/in.h> | #include <netinet/in.h> | ||||
#include <netinet/in_kdtrace.h> | #include <netinet/in_kdtrace.h> | ||||
#include <netinet/in_pcb.h> | #include <netinet/in_pcb.h> | ||||
#include <netinet/in_systm.h> | #include <netinet/in_systm.h> | ||||
#include <netinet/in_var.h> | #include <netinet/in_var.h> | ||||
#include <netinet/ip.h> | #include <netinet/ip.h> | ||||
▲ Show 20 Lines • Show All 674 Lines • ▼ Show 20 Lines | |||||
* collect error status. | * collect error status. | ||||
*/ | */ | ||||
struct inpcb * | struct inpcb * | ||||
udp_notify(struct inpcb *inp, int errno) | udp_notify(struct inpcb *inp, int errno) | ||||
{ | { | ||||
INP_WLOCK_ASSERT(inp); | INP_WLOCK_ASSERT(inp); | ||||
if ((errno == EHOSTUNREACH || errno == ENETUNREACH || | if ((errno == EHOSTUNREACH || errno == ENETUNREACH || | ||||
errno == EHOSTDOWN) && inp->inp_route.ro_rt) { | errno == EHOSTDOWN) && inp->inp_route.ro_nh) { | ||||
RTFREE(inp->inp_route.ro_rt); | NH_FREE(inp->inp_route.ro_nh); | ||||
inp->inp_route.ro_rt = (struct rtentry *)NULL; | inp->inp_route.ro_nh = (struct nhop_object *)NULL; | ||||
} | } | ||||
inp->inp_socket->so_error = errno; | inp->inp_socket->so_error = errno; | ||||
sorwakeup(inp->inp_socket); | sorwakeup(inp->inp_socket); | ||||
sowwakeup(inp->inp_socket); | sowwakeup(inp->inp_socket); | ||||
return (inp); | return (inp); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 959 Lines • Show Last 20 Lines |