03 Dec, 2006

40 commits

  • Signed-off-by: Al Viro
    Signed-off-by: David S. Miller

    Al Viro
     
  • Signed-off-by: Al Viro
    Signed-off-by: David S. Miller

    Al Viro
     
  • Signed-off-by: Al Viro
    Signed-off-by: David S. Miller

    Al Viro
     
  • Signed-off-by: Al Viro
    Signed-off-by: David S. Miller

    Al Viro
     
  • Signed-off-by: Al Viro
    Signed-off-by: David S. Miller

    Al Viro
     
  • Signed-off-by: Al Viro
    Signed-off-by: David S. Miller

    Al Viro
     
  • Signed-off-by: Al Viro
    Signed-off-by: David S. Miller

    Al Viro
     
  • Signed-off-by: Al Viro
    Signed-off-by: David S. Miller

    Al Viro
     
  • Signed-off-by: Al Viro
    Signed-off-by: David S. Miller

    Al Viro
     
  • Signed-off-by: Al Viro
    Signed-off-by: David S. Miller

    Al Viro
     
  • Signed-off-by: David S. Miller

    David S. Miller
     
  • This is a revision of the previously submitted patch, which alters
    the way files are organized and compiled in the following manner:

    * UDP and UDP-Lite now use separate object files
    * source file dependencies resolved via header files
    net/ipv{4,6}/udp_impl.h
    * order of inclusion files in udp.c/udplite.c adapted
    accordingly

    [NET/IPv4]: Support for the UDP-Lite protocol (RFC 3828)

    This patch adds support for UDP-Lite to the IPv4 stack, provided as an
    extension to the existing UDPv4 code:
    * generic routines are all located in net/ipv4/udp.c
    * UDP-Lite specific routines are in net/ipv4/udplite.c
    * MIB/statistics support in /proc/net/snmp and /proc/net/udplite
    * shared API with extensions for partial checksum coverage

    [NET/IPv6]: Extension for UDP-Lite over IPv6

    It extends the existing UDPv6 code base with support for UDP-Lite
    in the same manner as per UDPv4. In particular,
    * UDPv6 generic and shared code is in net/ipv6/udp.c
    * UDP-Litev6 specific extensions are in net/ipv6/udplite.c
    * MIB/statistics support in /proc/net/snmp6 and /proc/net/udplite6
    * support for IPV6_ADDRFORM
    * aligned the coding style of protocol initialisation with af_inet6.c
    * made the error handling in udpv6_queue_rcv_skb consistent;
    to return `-1' on error on all error cases
    * consolidation of shared code

    [NET]: UDP-Lite Documentation and basic XFRM/Netfilter support

    The UDP-Lite patch further provides
    * API documentation for UDP-Lite
    * basic xfrm support
    * basic netfilter support for IPv4 and IPv6 (LOG target)

    Signed-off-by: Gerrit Renker
    Signed-off-by: David S. Miller

    Gerrit Renker
     
  • RTM_GETPREFIX is completely unused and is thus removed.

    Signed-off-by: Thomas Graf
    Signed-off-by: David S. Miller

    Thomas Graf
     
  • By replacing the current method of exporting the device configuration
    which included allocating a temporary buffer, copying ipv6_devconf
    into it and copying that buffer into the message with a method that
    uses nla_reserve() allowing to copy the device configuration directly
    into the skb data buffer, a GFP_ATOMIC allocation could be removed.

    Signed-off-by: Thomas Graf
    Signed-off-by: David S. Miller

    Thomas Graf
     
  • Just some mis-placed ifdefs:

    net/ipv4/tcp_minisocks.c: In function ‘tcp_twsk_destructor’:
    net/ipv4/tcp_minisocks.c:364: warning: unused variable ‘twsk’
    net/ipv6/tcp_ipv6.c:1846: warning: ‘tcp_sock_ipv6_specific’ defined but not used
    net/ipv6/tcp_ipv6.c:1877: warning: ‘tcp_sock_ipv6_mapped_specific’ defined but not used

    Signed-off-by: David S. Miller

    David S. Miller
     
  • By modyfing genlmsg_put() to take a genl_family and by adding
    genlmsg_put_reply() the process of constructing the netlink
    and generic netlink headers is simplified.

    Signed-off-by: Thomas Graf
    Acked-by: Paul Moore
    Signed-off-by: David S. Miller

    Thomas Graf
     
  • A generic netlink user has no interest in knowing how to
    address the source of the original request.

    Signed-off-by: Thomas Graf
    Acked-by: Paul Moore
    Signed-off-by: David S. Miller

    Thomas Graf
     
  • Signed-off-by: Thomas Graf
    Acked-by: Paul Moore
    Signed-off-by: David S. Miller

    Thomas Graf
     
  • Based on implementation by Rick Payne.

    Signed-off-by: YOSHIFUJI Hideaki
    Signed-off-by: David S. Miller

    YOSHIFUJI Hideaki
     
  • As Steve left netpoll beast, hopefully not to return soon.
    He noticed that the header was messy. He straightened it
    up and polished it a little, then waved goodbye.

    Signed-off-by: Stephen Hemminger

    Stephen Hemminger
     
  • The beast had a long and not very happy history. At one
    point, a friend (netdump) had asked that he open up a little.
    Well, the friend was long gone now, and the beast had
    this dangling piece hanging (netpoll_queue).

    It wasn't hard to stitch the netpoll_queue back in
    where it belonged and make everything tidy.

    Signed-off-by: Stephen Hemminger

    Stephen Hemminger
     
  • The netpoll beast was still not happy. If the beast got
    clogged pipes, it tended to stare blankly off in space
    for a long time.

    The problem couldn't be completely fixed because the
    beast talked with irq's disabled. But it could be made
    less painful and shorter.

    Signed-off-by: Stephen Hemminger

    Stephen Hemminger
     
  • When the netpoll beast got busy, he tended to babble.
    Instead of talking out of his large mouth as normal,
    he tended to try to snort out other orifices. This lead
    to words (skbs) ending up in odd places (like NIT) that
    he did not intend.

    The normal way of talking wouldn't work, but he could
    at least change to using the same tone all the time.

    Signed-off-by: Stephen Hemminger

    Stephen Hemminger
     
  • The beast was not always healthy. When it was sick,
    it tended to be laconic and not tell anyone the real problem.
    A few small changes had it telling the world about its
    problems, if they really wanted to hear.

    Signed-off-by: Stephen Hemminger

    Stephen Hemminger
     
  • When the netpoll beast got really busy, it tended to clog
    things, so it stored them for later. But the beast was putting
    all it's skb's in one basket. This was bad because maybe some
    pipes were clogged and others were not.

    Signed-off-by: Stephen Hemminger

    Stephen Hemminger
     
  • After looking harder, Steve noticed that the netpoll
    beast leaked a little every time it shutdown for a nap.
    Not a big leak, but a nuisance kind of thing.

    He took out his refcount duct tape and patched the
    leak. It was overkill since there was already other
    locking in that area, but it looked clean and wouldn't
    attract fleas.

    Signed-off-by: Stephen Hemminger

    Stephen Hemminger
     
  • It was a dark and stormy night when Steve first saw the
    netpoll beast. The beast was odd, and misshapen but not
    extremely ugly.

    "Let me take off one of your warts" he said. This wart
    is where you tried to make an skb list yourself. If the
    beast had ever run out of memory, he would have stupefied
    himself unnecessarily.

    The first try was painful, so he tried again till the bleeding
    stopped. And again, and again...

    Signed-off-by: Stephen Hemminger

    Stephen Hemminger
     
  • Do not traverse the list of ack vector records [proportional to window size]
    when we know we will not find what we are looking for. This is especially
    useful because ack vectors are checked twice:
    1) Upon parsing of options.
    2) Upon notification of a new ack.

    All of the work will occur during check #1. Therefore, when check #2 is
    performed, no new work will be done. This is now "detected" and there is no
    performance hit when doing #2.

    Signed-off-by: Andrea Bittau
    Signed-off-by: Gerrit Renker
    Signed-off-by: Arnaldo Carvalho de Melo

    Andrea Bittau
     
  • This patch does not change code; it performs some trivial clean/tidy-ups:

    * removal of a `debug_prefix' string in favour of the
    already existing dccp_role(sk)

    * add documentation of structures and constants

    * separated out the cases for invalid packets (step 1
    of the packet validation)

    * removing duplicate statements

    * combining declaration & initialisation

    Signed-off-by: Gerrit Renker
    Signed-off-by: Arnaldo Carvalho de Melo

    Gerrit Renker
     
  • This patch replaces cryptic feature negotiation messages of type

    Oct 31 15:42:20 kernel: dccp_feat_change: feat change type=32 feat=1
    Oct 31 15:42:21 kernel: dccp_feat_change: feat change type=34 feat=1
    Oct 31 15:42:21 kernel: dccp_feat_change: feat change type=32 feat=5

    into ones of type:

    Nov 2 13:54:45 kernel: dccp_feat_change: ChangeL(CCID (1), 3)
    Nov 2 13:54:45 kernel: dccp_feat_change: ChangeR(CCID (1), 3)
    Nov 2 13:54:45 kernel: dccp_feat_change: ChangeL(Ack Ratio (5), 2)

    Also,
    * completed the feature number list wrt RFC 4340 sec. 6.4
    * annotating which ones have been implemented so far
    * implemented rudimentary sanity checking in feat.c (FIXMEs)
    * some minor fixes

    Commiter note: uninlined dccp_feat_name and dccp_feat_typename, for
    consistency with dccp_{state,packet}_name, that, BTW,
    should be compiled only if CONFIG_IP_DCCP_DEBUG is
    selected, leaving this to another cset tho. Also
    shortened dccp_feat_negotiation_debug to dccp_feat_debug.

    Signed-off-by: Gerrit Renker
    Signed-off-by: Arnaldo Carvalho de Melo

    Gerrit Renker
     
  • Resolves the problem that if IPv6 was configured `y' and DCCP `m' then
    dccp_ipv6 was not built as a module. With this change, dccp_ipv6 is built
    as a module whenever DCCP *OR* IPv6 are configured as modules; it will be
    built-in only if both DCCP = `y' and IPV6 = `y'.

    Signed-off-by: Gerrit Renker
    Signed-off-by: Arnaldo Carvalho de Melo

    Gerrit Renker
     
  • Throughout the TCP/DCCP (and tunnelling) code, it often happens that the
    return code of a transmit function needs to be tested against NET_XMIT_CN
    which is a value that does not indicate a strict error condition.

    This patch uses a macro for these recurring situations which is consistent
    with the already existing macro net_xmit_errno, saving on duplicated code.

    Signed-off-by: Gerrit Renker
    Signed-off-by: Arnaldo Carvalho de Melo

    Gerrit Renker
     
  • I noticed an insane high density of repeated characters fixable by a
    simple regular expression:

    % s/{.fn = \([^,]*\),[[:space:]]\+\(\\\n[[:space:]]\+\)\?.name = "\1"}/TYPE_SCTP_FUNC(\1)/g

    (NOTE: the .name for .fn = sctp_sf_do_9_2_start_shutdown didn't match)

    Signed-off-by: Peter Zijlstra
    Signed-off-by: David S. Miller

    Peter Zijlstra
     
  • 6.5.7(5): The result of E1 >> E2 is E1 right-shifted E2 bit positions.
    ...
    If E1 has a signed type and a negative value, the resulting value
    is implementation defined.

    So, cast -1 to unsigned type to make result well-defined.

    [ Modified to use ~0U based upon recommendation from Al Viro. -DaveM ]

    Signed-off-by: Alexey Dobriyan
    Signed-off-by: David S. Miller

    Alexey Dobriyan
     
  • This patch implements SELinux kernel support for DCCP
    (http://linux-net.osdl.org/index.php/DCCP), which is similar in
    operation to TCP in terms of connected state between peers.

    The SELinux support for DCCP is thus modeled on existing handling of
    TCP.

    A new DCCP socket class is introduced, to allow protocol
    differentation. The permissions for this class inherit all of the
    socket permissions, as well as the current TCP permissions (node_bind,
    name_bind etc). IPv4 and IPv6 are supported, although labeled
    networking is not, at this stage.

    Patches for SELinux userspace are at:
    http://people.redhat.com/jmorris/selinux/dccp/user/

    I've performed some basic testing, and it seems to be working as
    expected. Adding policy support is similar to TCP, the only real
    difference being that it's a different protocol.

    Acked-by: Stephen Smalley
    Signed-off-by: James Morris
    Signed-off-by: David S. Miller

    James Morris
     
  • This patch contains the scheduled removal of the frame diverter.

    Signed-off-by: Adrian Bunk
    Signed-off-by: David S. Miller

    Adrian Bunk
     
  • This
    * resolves a FIXME - DCCPv6 connections started all with
    an initial sequence number of 1;
    * provides a redirection `secure_dccpv6_sequence_number'
    in case the init_sequence_v6 code should be updated later;
    * concentrates the update of S.GAR into dccp_connect_init();
    * removes a duplicate dccp_update_gss() in ipv4.c;
    * uses inet->dport instead of usin->sin_port, due to the
    following assignment in dccp_v4_connect():
    inet->dport = usin->sin_port;

    Signed-off-by: Gerrit Renker
    Signed-off-by: Arnaldo Carvalho de Melo

    Gerrit Renker
     
  • This patch removes the following redundancies:

    1) The test skb->protocol == htons(ETH_P_IPV6) in dccp_v6_init_sequence
    is always true since
    * dccp_v6_conn_request() is the only calling function
    * dccp_v6_conn_request() redirects all skb's with ETH_P_IP to
    dccp_v4_conn_request()

    2) The first argument, `struct sock *sk', of dccp_v{4,6}_init_sequence()
    is never used.

    (This is similar for tcp_v{4,6}_init_sequence, an analogous patch has been
    submitted to netdev and merged.)

    By the way - are the `sport' / `dport' arguments in the right order?
    I have made them consistent among calls but they seem to be in the
    reverse order.

    Signed-off-by: Gerrit Renker
    Signed-off-by: Arnaldo Carvalho de Melo

    Gerrit Renker
     
  • This removes 3 forward declarations by reordering 2 functions.

    No code change at all.

    Signed-off-by: Gerrit Renker
    Signed-off-by: Arnaldo Carvalho de Melo

    Gerrit Renker
     
  • In order to make their function clearer and obtain a consistent naming
    scheme to identify sysctls, all existing DCCP sysctls have been prefixed
    with `sysctl_dccp', following the same convention as used by TCP.

    Feature-specific sysctls retain the `feat' in the middle, although the
    `default' has been dropped, since it is obvious from use.

    Also removed a duplicate `dccp_feat_default_sequence_window' in ipv4.c.

    Signed-off-by: Gerrit Renker
    Signed-off-by: Arnaldo Carvalho de Melo

    Gerrit Renker