diff options
| author | Robert Watson <rwatson@FreeBSD.org> | 2006-07-21 17:11:15 +0000 |
|---|---|---|
| committer | Robert Watson <rwatson@FreeBSD.org> | 2006-07-21 17:11:15 +0000 |
| commit | a152f8a36128ce99cc252941396d7db06ec7084e (patch) | |
| tree | c584d49beb0289bc5110816075b0f48383df5bfd /sys/netinet6/raw_ip6.c | |
| parent | 05a7329cbad79bc2d72b63eee9badbdb4deff62d (diff) | |
Notes
Diffstat (limited to 'sys/netinet6/raw_ip6.c')
| -rw-r--r-- | sys/netinet6/raw_ip6.c | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/sys/netinet6/raw_ip6.c b/sys/netinet6/raw_ip6.c index 86ff948f7902..cab78ebcef86 100644 --- a/sys/netinet6/raw_ip6.c +++ b/sys/netinet6/raw_ip6.c @@ -586,25 +586,42 @@ rip6_detach(struct socket *so) inp = sotoinpcb(so); KASSERT(inp != NULL, ("rip6_detach: inp == NULL")); + /* xxx: RSVP */ if (so == ip6_mrouter) ip6_mrouter_done(); + INP_INFO_WLOCK(&ripcbinfo); + INP_LOCK(inp); if (inp->in6p_icmp6filt) { FREE(inp->in6p_icmp6filt, M_PCB); inp->in6p_icmp6filt = NULL; } - INP_INFO_WLOCK(&ripcbinfo); - INP_LOCK(inp); in6_pcbdetach(inp); in6_pcbfree(inp); INP_INFO_WUNLOCK(&ripcbinfo); } +/* XXXRW: This can't ever be called. */ static void rip6_abort(struct socket *so) { + struct inpcb *inp; + + inp = sotoinpcb(so); + KASSERT(inp != NULL, ("rip6_abort: inp == NULL")); + + soisdisconnected(so); +} + +static void +rip6_close(struct socket *so) +{ + struct inpcb *inp; + + inp = sotoinpcb(so); + KASSERT(inp != NULL, ("rip6_close: inp == NULL")); + soisdisconnected(so); - rip6_detach(so); } static int @@ -794,4 +811,5 @@ struct pr_usrreqs rip6_usrreqs = { .pru_send = rip6_send, .pru_shutdown = rip6_shutdown, .pru_sockaddr = in6_setsockaddr, + .pru_close = rip6_close, }; |
