1. 09 7月, 2005 6 次提交
    • D
      [IPV4]: multicast API "join" issues · 917f2f10
      David L Stevens 提交于
      1) In the full-state API when imsf_numsrc == 0
         errno should be "0", but returns EADDRNOTAVAIL
      
      2) An illegal filter mode change
         errno should be EINVAL, but returns EADDRNOTAVAIL
      
      3) Trying to do an any-source option without IP_ADD_MEMBERSHIP
         errno should be EINVAL, but returns EADDRNOTAVAIL
      
      4) Adds comments for the less obvious error return values
      Signed-off-by: NDavid L Stevens <dlstevens@us.ibm.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      917f2f10
    • D
      [IPV4]: multicast API "join" issues · 8cdaaa15
      David L Stevens 提交于
      1) Changes IP_ADD_SOURCE_MEMBERSHIP and MCAST_JOIN_SOURCE_GROUP to ignore
         EADDRINUSE errors on a "courtesy join" -- prior membership or not
         is ok for these.
      
      2) Adds "leave group" equivalence of (INCLUDE, empty) filters in the 
         delta-based API. Without this, mixing delta-based API calls that
         end in an (INCLUDE, empty) filter would not allow a subsequent
         regular IP_ADD_MEMBERSHIP. It also frees socket buffer memory that
         isn't needed for both the multicast group record and source filter.
      Signed-off-by: NDavid L Stevens <dlstevens@us.ibm.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      8cdaaa15
    • D
      [IPV4]: multicast API "join" issues · ca9b907d
      David L Stevens 提交于
              This patch corrects a few problems with the IP_ADD_MEMBERSHIP
      socket option:
      
      1) The existing code makes an attempt at reference counting joins when
         using the ip_mreqn/imr_ifindex interface. Joining the same group
         on the same socket is an error, whatever the API. This leads to
         unexpected results when mixing ip_mreqn by index with ip_mreqn by
         address, ip_mreq, or other API's. For example, ip_mreq followed by
         ip_mreqn of the same group will "work" while the same two reversed
         will not.
                 Fixed to always return EADDRINUSE on a duplicate join and
         removed the (now unused) reference count in ip_mc_socklist.
      
      2) The group-search list in ip_mc_join_group() is comparing a full 
         ip_mreqn structure and all of it must match for it to find the
         group. This doesn't correctly match a group that was joined with
         ip_mreq or ip_mreqn with an address (with or without an index). It
         also doesn't match groups that are joined by different addresses on
         the same interface. All of these are the same multicast group,
         which is identified by group address and interface index.
                 Fixed the check to correctly match groups so we don't get
         duplicate group entries on the ip_mc_socklist.
      
      3) The old code allocates a multicast address before searching for
         duplicates requiring it to free in various error cases. This
         patch moves the allocate until after the search and
         igmp_max_memberships check, so never a need to allocate, then free
         an entry.
      Signed-off-by: NDavid L Stevens <dlstevens@us.ibm.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      ca9b907d
    • A
      [IPV4]: Apply sysctl_icmp_echo_ignore_broadcasts to ICMP_TIMESTAMP as well. · 4c866aa7
      Alexey Kuznetsov 提交于
      This was the full intention of the original code.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      4c866aa7
    • V
      [NET]: Fix sparse warnings · 86a76caf
      Victor Fusco 提交于
      From: Victor Fusco <victor@cetuc.puc-rio.br>
      
      Fix the sparse warning "implicit cast to nocast type"
      Signed-off-by: NVictor Fusco <victor@cetuc.puc-rio.br>
      Signed-off-by: NDomen Puncer <domen@coderock.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      86a76caf
    • D
      [NET]: Transform skb_queue_len() binary tests into skb_queue_empty() · b03efcfb
      David S. Miller 提交于
      This is part of the grand scheme to eliminate the qlen
      member of skb_queue_head, and subsequently remove the
      'list' member of sk_buff.
      
      Most users of skb_queue_len() want to know if the queue is
      empty or not, and that's trivially done with skb_queue_empty()
      which doesn't use the skb_queue_head->qlen member and instead
      uses the queue list emptyness as the test.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b03efcfb
  2. 08 7月, 2005 34 次提交