1. 23 5月, 2011 1 次提交
  2. 20 5月, 2011 3 次提交
  3. 19 5月, 2011 4 次提交
  4. 18 5月, 2011 2 次提交
  5. 17 5月, 2011 2 次提交
  6. 16 5月, 2011 1 次提交
  7. 15 5月, 2011 1 次提交
  8. 14 5月, 2011 5 次提交
    • D
      ipv4: Remove rt->rt_dst reference from ip_forward_options(). · 7be799a7
      David S. Miller 提交于
      At this point iph->daddr equals what rt->rt_dst would hold.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      7be799a7
    • D
      ipv4: Remove route key identity dependencies in ip_rt_get_source(). · 8e36360a
      David S. Miller 提交于
      Pass in the sk_buff so that we can fetch the necessary keys from
      the packet header when working with input routes.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      8e36360a
    • D
      ipv4: Always call ip_options_build() after rest of IP header is filled in. · 22f728f8
      David S. Miller 提交于
      This will allow ip_options_build() to reliably look at the values of
      iph->{daddr,saddr}
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      22f728f8
    • D
      ipv4: Kill spurious write to iph->daddr in ip_forward_options(). · 0374d9ce
      David S. Miller 提交于
      This code block executes when opt->srr_is_hit is set.  It will be
      set only by ip_options_rcv_srr().
      
      ip_options_rcv_srr() walks until it hits a matching nexthop in the SRR
      option addresses, and when it matches one 1) looks up the route for
      that nexthop and 2) on route lookup success it writes that nexthop
      value into iph->daddr.
      
      ip_forward_options() runs later, and again walks the SRR option
      addresses looking for the option matching the destination of the route
      stored in skb_rtable().  This route will be the same exact one looked
      up for the nexthop by ip_options_rcv_srr().
      
      Therefore "rt->rt_dst == iph->daddr" must be true.
      
      All it really needs to do is record the route's source address in the
      matching SRR option adddress.  It need not write iph->daddr again,
      since that has already been done by ip_options_rcv_srr() as detailed
      above.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      0374d9ce
    • V
      net: ipv4: add IPPROTO_ICMP socket kind · c319b4d7
      Vasiliy Kulikov 提交于
      This patch adds IPPROTO_ICMP socket kind.  It makes it possible to send
      ICMP_ECHO messages and receive the corresponding ICMP_ECHOREPLY messages
      without any special privileges.  In other words, the patch makes it
      possible to implement setuid-less and CAP_NET_RAW-less /bin/ping.  In
      order not to increase the kernel's attack surface, the new functionality
      is disabled by default, but is enabled at bootup by supporting Linux
      distributions, optionally with restriction to a group or a group range
      (see below).
      
      Similar functionality is implemented in Mac OS X:
      http://www.manpagez.com/man/4/icmp/
      
      A new ping socket is created with
      
          socket(PF_INET, SOCK_DGRAM, PROT_ICMP)
      
      Message identifiers (octets 4-5 of ICMP header) are interpreted as local
      ports. Addresses are stored in struct sockaddr_in. No port numbers are
      reserved for privileged processes, port 0 is reserved for API ("let the
      kernel pick a free number"). There is no notion of remote ports, remote
      port numbers provided by the user (e.g. in connect()) are ignored.
      
      Data sent and received include ICMP headers. This is deliberate to:
      1) Avoid the need to transport headers values like sequence numbers by
      other means.
      2) Make it easier to port existing programs using raw sockets.
      
      ICMP headers given to send() are checked and sanitized. The type must be
      ICMP_ECHO and the code must be zero (future extensions might relax this,
      see below). The id is set to the number (local port) of the socket, the
      checksum is always recomputed.
      
      ICMP reply packets received from the network are demultiplexed according
      to their id's, and are returned by recv() without any modifications.
      IP header information and ICMP errors of those packets may be obtained
      via ancillary data (IP_RECVTTL, IP_RETOPTS, and IP_RECVERR). ICMP source
      quenches and redirects are reported as fake errors via the error queue
      (IP_RECVERR); the next hop address for redirects is saved to ee_info (in
      network order).
      
      socket(2) is restricted to the group range specified in
      "/proc/sys/net/ipv4/ping_group_range".  It is "1 0" by default, meaning
      that nobody (not even root) may create ping sockets.  Setting it to "100
      100" would grant permissions to the single group (to either make
      /sbin/ping g+s and owned by this group or to grant permissions to the
      "netadmins" group), "0 4294967295" would enable it for the world, "100
      4294967295" would enable it for the users, but not daemons.
      
      The existing code might be (in the unlikely case anyone needs it)
      extended rather easily to handle other similar pairs of ICMP messages
      (Timestamp/Reply, Information Request/Reply, Address Mask Request/Reply
      etc.).
      
      Userspace ping util & patch for it:
      http://openwall.info/wiki/people/segoon/ping
      
      For Openwall GNU/*/Linux it was the last step on the road to the
      setuid-less distro.  A revision of this patch (for RHEL5/OpenVZ kernels)
      is in use in Owl-current, such as in the 2011/03/12 LiveCD ISOs:
      http://mirrors.kernel.org/openwall/Owl/current/iso/
      
      Initially this functionality was written by Pavel Kankovsky for
      Linux 2.4.32, but unfortunately it was never made public.
      
      All ping options (-b, -p, -Q, -R, -s, -t, -T, -M, -I), are tested with
      the patch.
      
      PATCH v3:
          - switched to flowi4.
          - minor changes to be consistent with raw sockets code.
      
      PATCH v2:
          - changed ping_debug() to pr_debug().
          - removed CONFIG_IP_PING.
          - removed ping_seq_fops.owner field (unused for procfs).
          - switched to proc_net_fops_create().
          - switched to %pK in seq_printf().
      
      PATCH v1:
          - fixed checksumming bug.
          - CAP_NET_RAW may not create icmp sockets anymore.
      
      RFC v2:
          - minor cleanups.
          - introduced sysctl'able group range to restrict socket(2).
      Signed-off-by: NVasiliy Kulikov <segoon@openwall.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      c319b4d7
  9. 13 5月, 2011 4 次提交
  10. 11 5月, 2011 6 次提交
  11. 09 5月, 2011 11 次提交