freebsd-dev/sys/netinet
Bruce M Simpson 3db0099738 MFC 206452:
Fix a few issues related to the legacy 4.4 BSD multicast APIs.

  IPv4 addresses can and do change during normal operation. Testing by
  pfSense developers exposed an issue where OpenOSPFD was using the IPv4
  address to leave the OSPF link-scope multicast groups on a dynamic
  OpenVPN tun interface, rather than using RFC 3678 with the interface
  index, which won't be raced when the interface's addresses change.

  In inp_join_group():
   If we are already a member of an ASM group, and IP_ADD_MEMBERSHIP or
   MCAST_JOIN_GROUP ioctls are re-issued, return EADDRINUSE as per the
   legacy 4.4BSD multicast API. This bends RFC 3678 slightly, but does
   not violate POLA for apps using the old API.
   It also stops us falling through to kicking IGMP state transactions
   in what is otherwise a no-op case.
   [This has already been dealt with in HEAD, but make it explicit before
    we MFC the change to 8.]

  In inp_leave_group():
   Fix a bogus conditional.
   Move the ifp null check to ioctls MCAST_LEAVE* in the switch..case
   where it actually belongs.
   If an interface was specified, by primary IPv4 address, for ioctl
   IP_DROP_MEMBERSHIP or MCAST_LEAVE_GROUP (an ASM full leave operation),
   then and only then should we look up the ifp from the IPv4 address in
   mreqs.imr_interface.
   If not, we fall through to imo_match_group() as before, but only in
   the IP_DROP_MEMBERSHIP case.

  With these changes, the legacy 4.4BSD multicast API idempotence should
  be mostly preserved in the SSM enabled IPv4 stack.

  [Note: this is not a straight svn merge as head and 8 differ slightly]

Found by:	ermal (with pfSense)
2010-04-27 13:50:15 +00:00
..
ipfw add priority scheduler. 2010-04-07 13:18:58 +00:00
libalias MFC a number of changes from head for ISP (203478,203463,203444,202418,201758, 2010-02-11 18:34:06 +00:00
accf_data.c Rework socket upcalls to close some races with setup/teardown of upcalls. 2009-06-01 21:17:03 +00:00
accf_dns.c Rework socket upcalls to close some races with setup/teardown of upcalls. 2009-06-01 21:17:03 +00:00
accf_http.c Rework socket upcalls to close some races with setup/teardown of upcalls. 2009-06-01 21:17:03 +00:00
icmp6.h Many network stack subsystems use a single global data structure to hold 2009-08-02 19:43:32 +00:00
icmp_var.h Many network stack subsystems use a single global data structure to hold 2009-08-02 19:43:32 +00:00
if_atm.c This main goals of this project are: 2008-12-15 06:10:57 +00:00
if_atm.h
if_ether.c MFC r206481: 2010-04-21 19:51:22 +00:00
if_ether.h remove dependency on net/if.h of this header 2009-02-16 15:07:40 +00:00
igmp_var.h Update stats in struct igmpstat using two new macros: 2009-04-12 13:41:13 +00:00
igmp.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
igmp.h These are no longer referenced in the tree, so can be safely removed. 2009-06-10 18:12:15 +00:00
in_cksum.c Add FBSDID to all files in netinet so that people can more 2007-10-07 20:44:24 +00:00
in_gif.c Many network stack subsystems use a single global data structure to hold 2009-08-02 19:43:32 +00:00
in_gif.h
in_mcast.c MFC 206452: 2010-04-27 13:50:15 +00:00
in_pcb.c MFC r202468: 2010-01-23 16:40:35 +00:00
in_pcb.h Add padding to struct inpcb, missed during our padding sweep earlier in 2009-08-02 22:47:08 +00:00
in_proto.c MFC r204140: 2010-03-27 17:34:57 +00:00
in_rmx.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
in_systm.h Use uint32_t instead of n_long and n_time, and uint16_t instead of n_short. 2009-02-13 15:14:43 +00:00
in_var.h Remove unused VNET_SET() and related macros; only VNET_GET() is 2009-07-16 21:13:04 +00:00
in.c MFC r206481: 2010-04-21 19:51:22 +00:00
in.h MFC of a large number of ipfw and dummynet fixes and enhancements 2010-03-23 09:58:59 +00:00
ip6.h Start removing IPv6 Type 0 Routing header code. 2009-03-03 13:12:12 +00:00
ip_carp.c MFC: r200026,201801: Swap carp(4) log levels. 2010-01-11 12:32:06 +00:00
ip_carp.h Update stats in struct carpstats using two new macros: CARPSTATS_ADD() 2009-04-12 14:19:37 +00:00
ip_divert.c MFC of 2 items to fix the csum for v6 issue: 2010-04-05 13:48:23 +00:00
ip_divert.h MFC of a large number of ipfw and dummynet fixes and enhancements 2010-03-23 09:58:59 +00:00
ip_dummynet.h MFC of a large number of ipfw and dummynet fixes and enhancements 2010-03-23 09:58:59 +00:00
ip_ecn.c Add FBSDID to all files in netinet so that people can more 2007-10-07 20:44:24 +00:00
ip_ecn.h
ip_encap.c MFC r201145 to stable/8: 2010-01-30 12:11:21 +00:00
ip_encap.h
ip_fastfwd.c MFC of 197952 and 198075 2010-02-07 09:00:22 +00:00
ip_fw.h MFC of a large number of ipfw and dummynet fixes and enhancements 2010-03-23 09:58:59 +00:00
ip_gre.c Enqueue de-capsulated packet instead of performing direct dispatch. It's 2008-07-04 21:01:30 +00:00
ip_gre.h
ip_icmp.c MFC r198050: 2009-12-05 19:44:16 +00:00
ip_icmp.h Use uint32_t instead of n_long and n_time, and uint16_t instead of n_short. 2009-02-13 15:14:43 +00:00
ip_id.c Rather than using hidden includes (with cicular dependencies), 2008-12-02 21:37:28 +00:00
ip_input.c MFC 205066, 205069, 205093, 205097, 205488: 2010-04-01 00:36:40 +00:00
ip_ipsec.c MFC of 2 items to fix the csum for v6 issue: 2010-04-05 13:48:23 +00:00
ip_ipsec.h Only four out of nine arguments for ip_ipsec_output() are actually used. 2009-06-05 23:53:17 +00:00
ip_mroute.c MFC r201254: 2010-01-04 15:58:36 +00:00
ip_mroute.h Switch cmd argument to u_long. This matches what if_ethersubr.c does and 2009-06-21 10:29:31 +00:00
ip_options.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
ip_options.h Add function ip_checkrouteralert(), which will be used 2009-03-04 02:51:22 +00:00
ip_output.c MFC of 2 items to fix the csum for v6 issue: 2010-04-05 13:48:23 +00:00
ip_var.h MFC r204140: 2010-03-27 17:34:57 +00:00
ip.h Use uint32_t instead of n_long and n_time, and uint16_t instead of n_short. 2009-02-13 15:14:43 +00:00
pim_var.h Update stats in struct pimstat using two new macros: PIMSTAT_ADD() 2009-04-12 14:06:26 +00:00
pim.h
raw_ip.c MFC r205251: 2010-03-27 17:51:27 +00:00
sctp_asconf.c MFC of 206137 2010-04-17 04:15:46 +00:00
sctp_asconf.h Code from the hack-session known as the IETF (and a 2008-12-06 13:19:54 +00:00
sctp_auth.c MFC 202449: 2010-01-24 22:17:08 +00:00
sctp_auth.h MFC of 202782 2010-04-17 03:57:16 +00:00
sctp_bsd_addr.c MFC 197288,197326,197327,197328,197342,197914,197929, 2009-12-07 07:33:51 +00:00
sctp_bsd_addr.h 1) Adds the rest of the VIMAGE change macros 2008-07-09 16:45:30 +00:00
sctp_cc_functions.c MFC 198522: 2010-01-17 16:58:37 +00:00
sctp_cc_functions.h 1) Adds the rest of the VIMAGE change macros 2008-07-09 16:45:30 +00:00
sctp_constants.h MFC of 206137 2010-04-17 04:15:46 +00:00
sctp_crc32.c MFC of 2 items to fix the csum for v6 issue: 2010-04-05 13:48:23 +00:00
sctp_crc32.h MFC of 2 items to fix the csum for v6 issue: 2010-04-05 13:48:23 +00:00
sctp_header.h MFC of 203847 2010-04-17 04:00:57 +00:00
sctp_indata.c MFC of 206281 2010-04-17 04:19:18 +00:00
sctp_indata.h MFC of 206137 2010-04-17 04:15:46 +00:00
sctp_input.c MFC of 206137 2010-04-17 04:15:46 +00:00
sctp_input.h 1) Adds the rest of the VIMAGE change macros 2008-07-09 16:45:30 +00:00
sctp_lock_bsd.h - Make strict-sacks be the default. 2008-08-28 09:44:07 +00:00
sctp_os_bsd.h MFC 202449: 2010-01-24 22:17:08 +00:00
sctp_os.h - Fix address add handling to clear cached routes and source addresses 2007-08-24 00:53:53 +00:00
sctp_output.c MFC of 206151 2010-04-17 04:17:17 +00:00
sctp_output.h MFC of 206137 2010-04-17 04:15:46 +00:00
sctp_pcb.c MFC of 206137 2010-04-17 04:15:46 +00:00
sctp_pcb.h MFC of 206137 2010-04-17 04:15:46 +00:00
sctp_peeloff.c - Macro-izes the packed declaration in all headers. 2008-06-14 07:58:05 +00:00
sctp_peeloff.h - Copyright change, cisco's silly tool wants it to say: 2007-05-08 17:01:12 +00:00
sctp_structs.h MFC of 206137 2010-04-17 04:15:46 +00:00
sctp_sysctl.c MFC of 205629 2010-04-17 04:13:52 +00:00
sctp_sysctl.h Fix a bug where wrong initialization value 2009-07-28 15:07:41 +00:00
sctp_timer.c MFC 197288,197326,197327,197328,197342,197914,197929, 2009-12-07 07:33:51 +00:00
sctp_timer.h Invariants changes that make more sense. 2008-10-27 13:53:31 +00:00
sctp_uio.h MFC of 205629 2010-04-17 04:13:52 +00:00
sctp_usrreq.c MFC of 206137 2010-04-17 04:15:46 +00:00
sctp_var.h MFC of 206137 2010-04-17 04:15:46 +00:00
sctp.h Changes to the NR-Sack code so that: 2009-06-17 12:34:56 +00:00
sctputil.c MFC of 206281 2010-04-17 04:19:18 +00:00
sctputil.h MFC of 206137 2010-04-17 04:15:46 +00:00
tcp_debug.c Remove the "The option TCPDEBUG requires option INET." requirement. 2009-06-10 10:39:41 +00:00
tcp_debug.h Use uint32_t instead of n_long and n_time, and uint16_t instead of n_short. 2009-02-13 15:14:43 +00:00
tcp_fsm.h Make tcpstates[] static, and make sure TCPSTATES is defined before 2007-07-30 11:06:42 +00:00
tcp_hostcache.c MFC r203724: 2010-03-27 17:26:31 +00:00
tcp_hostcache.h Add an essential .h file that skipped from the last commit (r185419). 2008-11-28 23:39:25 +00:00
tcp_input.c MFC r206456: 2010-04-17 17:40:12 +00:00
tcp_lro.c Don't calculate checksum if it has already been validated 2008-08-24 02:31:09 +00:00
tcp_lro.h Add generic TCP LOR into netinet 2008-06-11 22:12:50 +00:00
tcp_offload.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
tcp_offload.h Replace struct tcpopt with a proxy toeopt struct in the TOE driver interface to 2009-07-13 11:51:02 +00:00
tcp_output.c MFC 198990: 2009-11-17 16:17:11 +00:00
tcp_reass.c MFC r204838: 2010-03-27 17:50:02 +00:00
tcp_sack.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
tcp_seq.h
tcp_subr.c MFC r205251: 2010-03-27 17:51:27 +00:00
tcp_syncache.c MFC r204143: 2010-03-27 17:36:52 +00:00
tcp_syncache.h Replace struct tcpopt with a proxy toeopt struct in the TOE driver interface to 2009-07-13 11:51:02 +00:00
tcp_timer.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
tcp_timer.h Two changes: 2007-09-24 05:26:24 +00:00
tcp_timewait.c MFC r204838: 2010-03-27 17:50:02 +00:00
tcp_usrreq.c MFC 200847: 2010-01-05 17:04:14 +00:00
tcp_var.h MFC r204838: 2010-03-27 17:50:02 +00:00
tcp.h MFC 200847: 2010-01-05 17:04:14 +00:00
tcpip.h
toedev.h Don't check if an interface can do tcp offload if there are no offload devices registered on the system. 2008-09-01 05:30:22 +00:00
udp_usrreq.c MFC r205251: 2010-03-27 17:51:27 +00:00
udp_var.h Many network stack subsystems use a single global data structure to hold 2009-08-02 19:43:32 +00:00
udp.h Added support for NAT-Traversal (RFC 3948) in IPsec stack. 2009-06-12 15:44:35 +00:00