1. 12 Feb, 2010 1 commit
    • Herbert Xu's avatar
      inet: Remove bogus IGMPv3 report handling · c6b471e6
      Herbert Xu authored
      Currently we treat IGMPv3 reports as if it were an IGMPv2/v1 report.
      This is broken as IGMPv3 reports are formatted differently.  So we
      end up suppressing a bogus multicast group (which should be harmless
      as long as the leading reserved field is zero).
      In fact, IGMPv3 does not allow membership report suppression so
      we should simply ignore IGMPv3 membership reports as a host.
      This patch does exactly that.  I kept the case statement for it
      so people won't accidentally add it back thinking that we overlooked
      this case.
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
  2. 30 Nov, 2009 1 commit
  3. 14 Nov, 2009 1 commit
  4. 11 Nov, 2009 1 commit
  5. 15 Sep, 2009 1 commit
    • Moni Shoua's avatar
      bonding: remap muticast addresses without using dev_close() and dev_open() · 75c78500
      Moni Shoua authored
      This patch fixes commit e36b9d16
      . The approach
      there is to call dev_close()/dev_open() whenever the device type is changed in
      order to remap the device IP multicast addresses to HW multicast addresses.
      This approach suffers from 2 drawbacks:
      *. It assumes tha the device is UP when calling dev_close(), or otherwise
         dev_close() has no affect. It is worth to mention that initscripts (Redhat)
         and sysconfig (Suse) doesn't act the same in this matter. 
      *. dev_close() has other side affects, like deleting entries from the routing
         table, which might be unnecessary.
      The fix here is to directly remap the IP multicast addresses to HW multicast
      addresses for a bonding device that changes its type, and nothing else.
      Reported-by: default avatarJason Gunthorpe <jgunthorpe@obsidianresearch.com>
      Signed-off-by: default avatarMoni Shoua <monis@voltaire.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
  6. 03 Jun, 2009 2 commits
  7. 02 Jun, 2009 1 commit
    • Nivedita Singhvi's avatar
      ipv4: New multicast-all socket option · f771bef9
      Nivedita Singhvi authored
      After some discussion offline with Christoph Lameter and David Stevens
      regarding multicast behaviour in Linux, I'm submitting a slightly
      modified patch from the one Christoph submitted earlier.
      This patch provides a new socket option IP_MULTICAST_ALL.
      In this case, default behaviour is _unchanged_ from the current
      Linux standard. The socket option is set by default to provide
      original behaviour. Sockets wishing to receive data only from
      multicast groups they join explicitly will need to clear this
      socket option.
      Signed-off-by: default avatarNivedita Singhvi <niv@us.ibm.com>
      Signed-off-by: Christoph Lameter<cl@linux.com>
      Acked-by: default avatarDavid Stevens <dlstevens@us.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
  8. 26 Dec, 2008 1 commit
  9. 03 Nov, 2008 1 commit
  10. 14 Oct, 2008 1 commit
  11. 07 Oct, 2008 1 commit
  12. 13 Aug, 2008 1 commit
    • Daniel Lezcano's avatar
      netns: Fix crash by making igmp per namespace · 877acedc
      Daniel Lezcano authored
      This patch makes the multicast socket to be per namespace.
      When a network namespace is created, other than the init_net and a
      multicast packet is received, the kernel goes to a hang or a kernel panic.
      How to reproduce ?
       * create a child network namespace
       * create a pair virtual device veth
          * ip link add type veth
       * move one side to the pair network device to the child namespace
          * ip link set netns <childpid> dev veth1
       * ping -I veth0
      The bug appears because the function ip_mc_init_dev does not initialize
      the different multicast fields as it exits because it is not the init_net.
      BUG: soft lockup - CPU#0 stuck for 61s! [avahi-daemon:2695]
      Modules linked in:
      irq event stamp: 50350
      hardirqs last  enabled at (50349): [<c03ee949>] _spin_unlock_irqrestore+0x34/0x39
      hardirqs last disabled at (50350): [<c03ec639>] schedule+0x9f/0x5ff
      softirqs last  enabled at (45712): [<c0374d4b>] ip_setsockopt+0x8e7/0x909
      softirqs last disabled at (45710): [<c03ee682>] _spin_lock_bh+0x8/0x27
      Pid: 2695, comm: avahi-daemon Not tainted (2.6.27-rc2-00029-g0872073 #3)
      EIP: 0060:[<c03ee47c>] EFLAGS: 00000297 CPU: 0
      EIP is at __read_lock_failed+0x8/0x10
      EAX: c4f38810 EBX: c4f38810 ECX: 00000000 EDX: c04cc22e
      ESI: fb0000e0 EDI: 00000011 EBP: 0f02000a ESP: c4e3faa0
       DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
      CR0: 8005003b CR2: 44618a40 CR3: 04e37000 CR4: 000006d0
      DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000
      DR6: ffff0ff0 DR7: 00000400
       [<c02311f8>] ? _raw_read_lock+0x23/0x25
       [<c0390666>] ? ip_check_mc+0x1c/0x83
       [<c036d478>] ? ip_route_input+0x229/0xe92
       [<c022e2e4>] ? trace_hardirqs_on_thunk+0xc/0x10
       [<c0104c9c>] ? do_IRQ+0x69/0x7d
       [<c0102e64>] ? restore_nocheck_notrace+0x0/0xe
       [<c036fdba>] ? ip_rcv+0x227/0x505
       [<c0358764>] ? netif_receive_skb+0xfe/0x2b3
       [<c03588d2>] ? netif_receive_skb+0x26c/0x2b3
       [<c035af31>] ? process_backlog+0x73/0xbd
       [<c035a8cd>] ? net_rx_action+0xc1/0x1ae
       [<c01218a8>] ? __do_softirq+0x7b/0xef
       [<c0121953>] ? do_softirq+0x37/0x4d
       [<c035b50d>] ? dev_queue_xmit+0x3d4/0x40b
       [<c0122037>] ? local_bh_enable+0x96/0xab
       [<c035b50d>] ? dev_queue_xmit+0x3d4/0x40b
       [<c012181e>] ? _local_bh_enable+0x79/0x88
       [<c035fcb8>] ? neigh_resolve_output+0x20f/0x239
       [<c0373118>] ? ip_finish_output+0x1df/0x209
       [<c0373364>] ? ip_dev_loopback_xmit+0x62/0x66
       [<c0371db5>] ? ip_local_out+0x15/0x17
       [<c0372013>] ? ip_push_pending_frames+0x25c/0x2bb
       [<c03891b8>] ? udp_push_pending_frames+0x2bb/0x30e
       [<c038a189>] ? udp_sendmsg+0x413/0x51d
       [<c038a1a9>] ? udp_sendmsg+0x433/0x51d
       [<c038f927>] ? inet_sendmsg+0x35/0x3f
       [<c034f092>] ? sock_sendmsg+0xb8/0xd1
       [<c012d554>] ? autoremove_wake_function+0x0/0x2b
       [<c022e6de>] ? copy_from_user+0x32/0x5e
       [<c022e6de>] ? copy_from_user+0x32/0x5e
       [<c034f238>] ? sys_sendmsg+0x18d/0x1f0
       [<c0175e90>] ? pipe_write+0x3cb/0x3d7
       [<c0170347>] ? do_sync_write+0xbe/0x105
       [<c012d554>] ? autoremove_wake_function+0x0/0x2b
       [<c03503b2>] ? sys_socketcall+0x176/0x1b0
       [<c01085ea>] ? syscall_trace_enter+0x6c/0x7b
       [<c0102e1a>] ? syscall_call+0x7/0xb
      Signed-off-by: default avatarDaniel Lezcano <dlezcano@fr.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
  13. 20 Jul, 2008 1 commit
  14. 12 Jun, 2008 1 commit
  15. 13 May, 2008 1 commit
  16. 25 Mar, 2008 2 commits
  17. 06 Mar, 2008 1 commit
  18. 29 Feb, 2008 1 commit
  19. 10 Feb, 2008 1 commit
  20. 28 Jan, 2008 8 commits
  21. 10 Oct, 2007 4 commits
    • Pavel Emelyanov's avatar
      [NET]: Make core networking code use seq_open_private · cf7732e4
      Pavel Emelyanov authored
      This concerns the ipv4 and ipv6 code mostly, but also the netlink
      and unix sockets.
      The netlink code is an example of how to use the __seq_open_private()
      call - it saves the net namespace on this private.
      Signed-off-by: default avatarPavel Emelyanov <xemul@openvz.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    • Stephen Hemminger's avatar
      [NET]: sparse warning fixes · cfcabdcc
      Stephen Hemminger authored
      Fix a bunch of sparse warnings. Mostly about 0 used as
      NULL pointer, and shadowed variable declarations.
      One notable case was that hash size should have been unsigned.
      Signed-off-by: default avatarStephen Hemminger <shemminger@linux-foundation.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    • Eric W. Biederman's avatar
      [NET]: Make the device list and device lookups per namespace. · 881d966b
      Eric W. Biederman authored
      This patch makes most of the generic device layer network
      namespace safe.  This patch makes dev_base_head a
      network namespace variable, and then it picks up
      a few associated variables.  The functions:
      were modified to take a network namespace argument, and
      deal with it.
      vlan_ioctl_set and brioctl_set were modified so their
      hooks will receive a network namespace argument.
      So basically anthing in the core of the network stack that was
      affected to by the change of dev_base was modified to handle
      multiple network namespaces.  The rest of the network stack was
      simply modified to explicitly use &init_net the initial network
      namespace.  This can be fixed when those components of the network
      stack are modified to handle multiple network namespaces.
      For now the ifindex generator is left global.
      Fundametally ifindex numbers are per namespace, or else
      we will have corner case problems with migration when
      we get that far.
      At the same time there are assumptions in the network stack
      that the ifindex of a network device won't change.  Making
      the ifindex number global seems a good compromise until
      the network stack can cope with ifindex changes when
      you change namespaces, and the like.
      Signed-off-by: default avatarEric W. Biederman <ebiederm@xmission.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    • Eric W. Biederman's avatar
      [NET]: Make /proc/net per network namespace · 457c4cbc
      Eric W. Biederman authored
      This patch makes /proc/net per network namespace.  It modifies the global
      variables proc_net and proc_net_stat to be per network namespace.
      The proc_net file helpers are modified to take a network namespace argument,
      and all of their callers are fixed to pass &init_net for that argument.
      This ensures that all of the /proc/net files are only visible and
      usable in the initial network namespace until the code behind them
      has been updated to be handle multiple network namespaces.
      Making /proc/net per namespace is necessary as at least some files
      in /proc/net depend upon the set of network devices which is per
      network namespace, and even more files in /proc/net have contents
      that are relevant to a single network namespace.
      Signed-off-by: default avatarEric W. Biederman <ebiederm@xmission.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
  22. 07 Jun, 2007 1 commit
  23. 03 May, 2007 1 commit
  24. 26 Apr, 2007 5 commits