16 Jul, 2019

1 commit

  • When conntracks change during a dialog, SDP messages may be sent from
    different conntracks to establish expects with identical tuples. In this
    case expects conflict may be detected for the 2nd SDP message and end up
    with a process failure.

    The fixing here is to reuse an existing expect who has the same tuple for a
    different conntrack if any.

    Here are two scenarios for the case.

    1)
    SERVER CPE

    | INVITE SDP |
    5060 ||5060
    | 183 SDP |
    5060 |---------------------->|5060 ===> Conntrack 1
    | PRACK |
    50601 ||5060
    | 200 OK (INVITE) |
    5060 |---------------------->|5060
    | ACK |
    50601 ||
    | |
    | INVITE SDP (t38) |
    50601 |---------------------->|5060 ===> Conntrack 2

    With a certain configuration in the CPE, SIP messages "183 with SDP" and
    "re-INVITE with SDP t38" will go through the sip helper to create
    expects for RTP and RTCP.

    It is okay to create RTP and RTCP expects for "183", whose master
    connection source port is 5060, and destination port is 5060.

    In the "183" message, port in Contact header changes to 50601 (from the
    original 5060). So the following requests e.g. PRACK and ACK are sent to
    port 50601. It is a different conntrack (let call Conntrack 2) from the
    original INVITE (let call Conntrack 1) due to the port difference.

    In this example, after the call is established, there is RTP stream but no
    RTCP stream for Conntrack 1, so the RTP expect created upon "183" is
    cleared, and RTCP expect created for Conntrack 1 retains.

    When "re-INVITE with SDP t38" arrives to create RTP&RTCP expects, current
    ALG implementation will call nf_ct_expect_related() for RTP and RTCP. The
    expects tuples are identical to those for Conntrack 1. RTP expect for
    Conntrack 2 succeeds in creation as the one for Conntrack 1 has been
    removed. RTCP expect for Conntrack 2 fails in creation because it has
    idential tuples and 'conflict' with the one retained for Conntrack 1. And
    then result in a failure in processing of the re-INVITE.

    2)

    SERVER A CPE

    | REGISTER |
    5060 | CT1
    | 200 |
    5060 |------------------>| 5060
    | |
    | INVITE SDP(1) |
    5060 || 5060 SERVER B
    | ACK |
    5060 || 5060 ==> CT2
    | 100 |
    5060 || 50601 ==> CT3
    | |
    ||
    | |
    | BYE |
    5060 || 50601
    | INVITE SDP(3) |
    5060 | CT1

    CPE sends an INVITE request(1) to Server A, and creates a RTP&RTCP expect
    pair for this Conntrack 1 (CT1). Server A responds 300 to redirect to
    Server B. The RTP&RTCP expect pairs created on CT1 are removed upon 300
    response.

    CPE sends the INVITE request(2) to Server B, and creates an expect pair
    for the new conntrack (due to destination address difference), let call
    CT2. Server B changes the port to 50601 in 200 OK response, and the
    following requests ACK and BYE from CPE are sent to 50601. The call is
    established. There is RTP stream and no RTCP stream. So RTP expect is
    removed and RTCP expect for CT2 retains.

    As BYE request is sent from port 50601, it is another conntrack, let call
    CT3, different from CT2 due to the port difference. So the BYE request will
    not remove the RTCP expect for CT2.

    Then another outgoing call is made, with the same RTP port being used (not
    definitely but possibly). CPE firstly sends the INVITE request(3) to Server
    A, and tries to create a RTP&RTCP expect pairs for this CT1. In current ALG
    implementation, the RTCP expect for CT1 fails in creation because it
    'conflicts' with the residual one for CT2. As a result the INVITE request
    fails to send.

    Signed-off-by: xiao ruizhu
    Signed-off-by: Pablo Neira Ayuso

    xiao ruizhu
     

19 Jun, 2019

1 commit

  • Based on 2 normalized pattern(s):

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license version 2 as
    published by the free software foundation

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license version 2 as
    published by the free software foundation #

    extracted by the scancode license scanner the SPDX license identifier

    GPL-2.0-only

    has been chosen to replace the boilerplate/reference in 4122 file(s).

    Signed-off-by: Thomas Gleixner
    Reviewed-by: Enrico Weigelt
    Reviewed-by: Kate Stewart
    Reviewed-by: Allison Randal
    Cc: linux-spdx@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190604081206.933168790@linutronix.de
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     

30 Apr, 2019

1 commit


09 Apr, 2019

1 commit


18 Mar, 2019

1 commit


16 Feb, 2019

1 commit

  • When enabled, the sip_external_media logic will leave SDP
    payload untouched when it detects that interface towards INVITEd
    party is the same with the one towards media endpoint.

    The typical scenario for this logic is when a LAN SIP agent has more
    than one IP address (uses a different address for media streams than
    the one used on signalling stream) and it also forwards calls to a
    voice mailbox located on the WAN side. In such case sip_direct_media
    must be disabled (so normal calls could be handled by the SIP
    helper), but media streams that are not traversing this router must
    also be excluded from address translation (e.g. call forwards).

    Signed-off-by: Alin Nastac
    Signed-off-by: Pablo Neira Ayuso

    Alin Nastac
     

07 May, 2018

1 commit

  • Pablo Neira Ayuso says:

    ====================
    Netfilter/IPVS updates for net-next

    The following patchset contains Netfilter/IPVS updates for your net-next
    tree, more relevant updates in this batch are:

    1) Add Maglev support to IPVS. Moreover, store lastest server weight in
    IPVS since this is needed by maglev, patches from from Inju Song.

    2) Preparation works to add iptables flowtable support, patches
    from Felix Fietkau.

    3) Hand over flows back to conntrack slow path in case of TCP RST/FIN
    packet is seen via new teardown state, also from Felix.

    4) Add support for extended netlink error reporting for nf_tables.

    5) Support for larger timeouts that 23 days in nf_tables, patch from
    Florian Westphal.

    6) Always set an upper limit to dynamic sets, also from Florian.

    7) Allow number generator to make map lookups, from Laura Garcia.

    8) Use hash_32() instead of opencode hashing in IPVS, from Vicent Bernat.

    9) Extend ip6tables SRH match to support previous, next and last SID,
    from Ahmed Abdelsalam.

    10) Move Passive OS fingerprint nf_osf.c, from Fernando Fernandez.

    11) Expose nf_conntrack_max through ctnetlink, from Florent Fourcot.

    12) Several housekeeping patches for xt_NFLOG, x_tables and ebtables,
    from Taehee Yoo.

    13) Unify meta bridge with core nft_meta, then make nft_meta built-in.
    Make rt and exthdr built-in too, again from Florian.

    14) Missing initialization of tbl->entries in IPVS, from Cong Wang.
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     

24 Apr, 2018

1 commit


09 Apr, 2018

1 commit

  • Callum Sinclair reported SIP IP Phone errors that he tracked down to
    such phones sending session descriptions for different media types but
    with same port numbers.

    The expect core will only 'refresh' existing expectation if it is
    from same master AND same expectation class (media type).
    As expectation class is different, we get an error.

    The SIP connection tracking code will then

    1). drop the SDP packet
    2). if an rtp expectation was already installed successfully,
    error on rtcp expectation will cancel the rtp one.

    Make the expect core report back to caller when the conflict is due
    to different expectation class and have SIP tracker ignore soft-error.

    Reported-by: Callum Sinclair
    Tested-by: Callum Sinclair
    Signed-off-by: Florian Westphal
    Signed-off-by: Pablo Neira Ayuso

    Florian Westphal
     

24 Jul, 2017

1 commit

  • This patch removes duplicate rcu_read_lock().

    1. IPVS part:

    According to Julian Anastasov's mention, contexts of ipvs are described
    at: http://marc.info/?l=netfilter-devel&m=149562884514072&w=2, in summary:

    - packet RX/TX: does not need locks because packets come from hooks.
    - sync msg RX: backup server uses RCU locks while registering new
    connections.
    - ip_vs_ctl.c: configuration get/set, RCU locks needed.
    - xt_ipvs.c: It is a netfilter match, running from hook context.

    As result, rcu_read_lock and rcu_read_unlock can be removed from:

    - ip_vs_core.c: all
    - ip_vs_ctl.c:
    - only from ip_vs_has_real_service
    - ip_vs_ftp.c: all
    - ip_vs_proto_sctp.c: all
    - ip_vs_proto_tcp.c: all
    - ip_vs_proto_udp.c: all
    - ip_vs_xmit.c: all (contains only packet processing)

    2. Netfilter part:

    There are three types of functions that are guaranteed the rcu_read_lock().
    First, as result, functions are only called by nf_hook():

    - nf_conntrack_broadcast_help(), pptp_expectfn(), set_expected_rtp_rtcp().
    - tcpmss_reverse_mtu(), tproxy_laddr4(), tproxy_laddr6().
    - match_lookup_rt6(), check_hlist(), hashlimit_mt_common().
    - xt_osf_match_packet().

    Second, functions that caller already held the rcu_read_lock().
    - destroy_conntrack(), ctnetlink_conntrack_event().
    - ctnl_timeout_find_get(), nfqnl_nf_hook_drop().

    Third, functions that are mixed with type1 and type2.

    These functions are called by nf_hook() also these are called by
    ordinary functions that already held the rcu_read_lock():

    - __ctnetlink_glue_build(), ctnetlink_expect_event().
    - ctnetlink_proto_size().

    Applied files are below:

    - nf_conntrack_broadcast.c, nf_conntrack_core.c, nf_conntrack_netlink.c.
    - nf_conntrack_pptp.c, nf_conntrack_sip.c, nfnetlink_cttimeout.c.
    - nfnetlink_queue.c, xt_TCPMSS.c, xt_TPROXY.c, xt_addrtype.c.
    - xt_connlimit.c, xt_hashlimit.c, xt_osf.c

    Detailed calltrace can be found at:
    http://marc.info/?l=netfilter-devel&m=149667610710350&w=2

    Signed-off-by: Taehee Yoo
    Acked-by: Julian Anastasov
    Signed-off-by: Pablo Neira Ayuso

    Taehee Yoo
     

19 Apr, 2017

2 commits

  • No need to track this for inkernel helpers anymore as
    NF_CT_HELPER_BUILD_BUG_ON checks do this now.

    All inkernel helpers know what kind of structure they
    stored in helper->data.

    Signed-off-by: Florian Westphal
    Signed-off-by: Pablo Neira Ayuso

    Florian Westphal
     
  • add a 32 byte scratch area in the helper struct instead of relying
    on variable sized helpers plus compile-time asserts to let us know
    if 32 bytes aren't enough anymore.

    Not having variable sized helpers will later allow to add BUILD_BUG_ON
    for the total size of conntrack extensions -- the helper extension is
    the only one that doesn't have a fixed size.

    The (useless!) NF_CT_HELPER_BUILD_BUG_ON(0); are added so that in case
    someone adds a new helper and copy-pastes from one that doesn't store
    private data at least some indication that this macro should be used
    somehow is there...

    Signed-off-by: Florian Westphal
    Signed-off-by: Pablo Neira Ayuso

    Florian Westphal
     

07 Apr, 2017

1 commit


03 Mar, 2017

1 commit

  • In commit 82de0be6862cd ("netfilter: Add helper array
    register/unregister functions"),
    struct nf_conntrack_helper sip[MAX_PORTS][4] was changed to
    sip[MAX_PORTS * 4], so the memory init should have been changed to
    memset(&sip[4 * i], 0, 4 * sizeof(sip[i]));

    But as the sip[] table is allocated in the BSS, it is already set to 0

    Fixes: 82de0be6862cd ("netfilter: Add helper array register/unregister functions")
    Signed-off-by: Christophe Leroy
    Signed-off-by: Pablo Neira Ayuso

    Christophe Leroy
     

12 Feb, 2017

1 commit


28 Oct, 2016

1 commit

  • on SIP requests, so a fragmented TCP SIP packet from an allow header starting with
    INVITE,NOTIFY,OPTIONS,REFER,REGISTER,UPDATE,SUBSCRIBE
    Content-Length: 0

    will not bet interpreted as an INVITE request. Also Request-URI must start with an alphabetic character.

    Confirm with RFC 3261
    Request-Line = Method SP Request-URI SP SIP-Version CRLF

    Fixes: 30f33e6dee80 ("[NETFILTER]: nf_conntrack_sip: support method specific request/response handling")
    Signed-off-by: Ulrich Weber
    Acked-by: Marco Angaroni
    Signed-off-by: Pablo Neira Ayuso

    Ulrich Weber
     

07 Sep, 2016

3 commits

  • Current parsing methods for SIP headers do not allow the presence of
    tab characters between header name and header value. As a result Call-ID
    SIP headers like the following are discarded by IPVS SIP persistence
    engine:

    "Call-ID\t: mycallid@abcde"
    "Call-ID:\tmycallid@abcde"

    In above examples Call-IDs are represented as strings in C language.
    Obviously in real message we have byte "09" before/after colon (":").

    Proposed fix is in nf_conntrack_sip module.
    Function sip_skip_whitespace() should skip tabs in addition to spaces,
    since in SIP grammar whitespace (WSP) corresponds to space or tab.

    Below is an extract of relevant SIP ABNF syntax.

    Call-ID = ( "Call-ID" / "i" ) HCOLON callid
    callid = word [ "@" word ]

    HCOLON = *( SP / HTAB ) ":" SWS
    SWS = [LWS] ; sep whitespace
    LWS = [*WSP CRLF] 1*WSP ; linear whitespace
    WSP = SP / HTAB
    word = 1*(alphanum / "-" / "." / "!" / "%" / "*" /
    "_" / "+" / "`" / "'" / "~" /
    "(" / ")" / "" /
    ":" / "\" / DQUOTE /
    "/" / "[" / "]" / "?" /
    "{" / "}" )

    Signed-off-by: Marco Angaroni
    Signed-off-by: Pablo Neira Ayuso

    Marco Angaroni
     
  • Current parsing methods for SIP header Call-ID do not check correctly all
    characters allowed by RFC 3261. In particular "," character is allowed
    instead of "'" character. As a result Call-ID headers like the following
    are discarded by IPVS SIP persistence engine.

    Call-ID: -.!%*_+`'~()<>:\"/[]?{}

    Above example is composed using all non-alphanumeric characters listed
    in RFC 3261 for Call-ID header syntax.

    Proposed fix is in nf_conntrack_sip module; function iswordc() checks this
    range: (c >= '(' && c
    Signed-off-by: Pablo Neira Ayuso

    Marco Angaroni
     
  • Current parsing methods for SIP headers do not properly manage
    continuation lines: in case of Call-ID header the first character of
    Call-ID header value is truncated. As a result IPVS SIP persistence
    engine hashes over a call-id that is not exactly the one present in
    the originale message.

    Example: "Call-ID: \r\n abcdeABCDE1234"
    results in extracted call-id equal to "bcdeABCDE1234".

    In above example Call-ID is represented as a string in C language.
    Obviously in real message the first bytes after colon (":") are
    "20 0d 0a 20".

    Proposed fix is in nf_conntrack_sip module.
    Since sip_follow_continuation() function walks past the leading
    spaces or tabs of the continuation line, sip_skip_whitespace()
    should simply return the ouput of sip_follow_continuation().
    Otherwise another iteration of the for loop is done and dptr
    is incremented by one pointing to the second character of the
    first word in the header.

    Below is an extract of relevant SIP ABNF syntax.

    Call-ID = ( "Call-ID" / "i" ) HCOLON callid
    callid = word [ "@" word ]

    HCOLON = *( SP / HTAB ) ":" SWS
    SWS = [LWS] ; sep whitespace
    LWS = [*WSP CRLF] 1*WSP ; linear whitespace
    WSP = SP / HTAB
    word = 1*(alphanum / "-" / "." / "!" / "%" / "*" /
    "_" / "+" / "`" / "'" / "~" /
    "(" / ")" / "" /
    ":" / "\" / DQUOTE /
    "/" / "[" / "]" / "?" /
    "{" / "}" )

    Signed-off-by: Marco Angaroni
    Signed-off-by: Pablo Neira Ayuso

    Marco Angaroni
     

08 Aug, 2016

1 commit

  • Do not drop packet when CSeq is 0 as 0 is also a valid value for CSeq.

    simple_strtoul() will return 0 either when all digits are 0
    or if there are no digits at all. Therefore when simple_strtoul()
    returns 0 we check if first character is digit 0 or not.

    Signed-off-by: Christophe Leroy
    Signed-off-by: Pablo Neira Ayuso

    Christophe Leroy
     

21 Jul, 2016

1 commit

  • Add nf_ct_helper_init(), nf_conntrack_helpers_register() and
    nf_conntrack_helpers_unregister() functions to avoid repetitive
    opencoded initialization in helpers.

    This patch keeps an id parameter for nf_ct_helper_init() not to break
    helper matching by name that has been inconsistently exposed to
    userspace through ports, eg. ftp-2121, and through an incremental id,
    eg. tftp-1.

    Signed-off-by: Gao Feng
    Signed-off-by: Pablo Neira Ayuso

    Gao Feng
     

30 May, 2016

1 commit


05 Jan, 2016

1 commit


14 Oct, 2014

1 commit

  • The kernel used to contain two functions for length-delimited,
    case-insensitive string comparison, strnicmp with correct semantics and
    a slightly buggy strncasecmp. The latter is the POSIX name, so strnicmp
    was renamed to strncasecmp, and strnicmp made into a wrapper for the new
    strncasecmp to avoid breaking existing users.

    To allow the compat wrapper strnicmp to be removed at some point in the
    future, and to avoid the extra indirection cost, do
    s/strnicmp/strncasecmp/g.

    Signed-off-by: Rasmus Villemoes
    Cc: "David S. Miller"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Rasmus Villemoes
     

07 Mar, 2014

1 commit


01 Oct, 2013

1 commit

  • There are currently seven different NAT hooks used in both
    nf_conntrack_sip and nf_nat_sip, each of the hooks is exported in
    nf_conntrack_sip, then set from the nf_nat_sip NAT helper.

    And because each of them is exported there is quite some overhead
    introduced due of this.

    By introducing nf_nat_sip_hooks I am able to reduce both text/data
    somewhat. For nf_conntrack_sip e. g. I get

    text data bss dec
    old 15243 5256 32 20531
    new 15010 5192 32 20234

    Signed-off-by: Holger Eitzenberger
    Signed-off-by: Pablo Neira Ayuso

    holger@eitzenberger.org
     

27 Sep, 2013

1 commit

  • Currently set_expected_rtp_rtcp() in the SIP helper uses
    rcu_dereference() two times to access two different NAT hook
    functions. However, only the first one is protected by the RCU
    reader lock, but the 2nd isn't. Fix it by extending the RCU
    protected area.

    This is more a cosmetic thing since we rely on all netfilter hooks
    being rcu_read_lock()ed by nf_hook_slow() in many places anyways,
    as Patrick McHardy clarified.

    Signed-off-by: Holger Eitzenberger
    Signed-off-by: Pablo Neira Ayuso

    holger@eitzenberger.org
     

06 Apr, 2013

1 commit


28 Feb, 2013

1 commit

  • I'm not sure why, but the hlist for each entry iterators were conceived

    list_for_each_entry(pos, head, member)

    The hlist ones were greedy and wanted an extra parameter:

    hlist_for_each_entry(tpos, pos, head, member)

    Why did they need an extra pos parameter? I'm not quite sure. Not only
    they don't really need it, it also prevents the iterator from looking
    exactly like the list iterator, which is unfortunate.

    Besides the semantic patch, there was some manual work required:

    - Fix up the actual hlist iterators in linux/list.h
    - Fix up the declaration of other iterators based on the hlist ones.
    - A very small amount of places were using the 'node' parameter, this
    was modified to use 'obj->member' instead.
    - Coccinelle didn't handle the hlist_for_each_entry_safe iterator
    properly, so those had to be fixed up manually.

    The semantic patch which is mostly the work of Peter Senna Tschudin is here:

    @@
    iterator name hlist_for_each_entry, hlist_for_each_entry_continue, hlist_for_each_entry_from, hlist_for_each_entry_rcu, hlist_for_each_entry_rcu_bh, hlist_for_each_entry_continue_rcu_bh, for_each_busy_worker, ax25_uid_for_each, ax25_for_each, inet_bind_bucket_for_each, sctp_for_each_hentry, sk_for_each, sk_for_each_rcu, sk_for_each_from, sk_for_each_safe, sk_for_each_bound, hlist_for_each_entry_safe, hlist_for_each_entry_continue_rcu, nr_neigh_for_each, nr_neigh_for_each_safe, nr_node_for_each, nr_node_for_each_safe, for_each_gfn_indirect_valid_sp, for_each_gfn_sp, for_each_host;

    type T;
    expression a,c,d,e;
    identifier b;
    statement S;
    @@

    -T b;

    [akpm@linux-foundation.org: drop bogus change from net/ipv4/raw.c]
    [akpm@linux-foundation.org: drop bogus hunk from net/ipv6/raw.c]
    [akpm@linux-foundation.org: checkpatch fixes]
    [akpm@linux-foundation.org: fix warnings]
    [akpm@linux-foudnation.org: redo intrusive kvm changes]
    Tested-by: Peter Senna Tschudin
    Acked-by: Paul E. McKenney
    Signed-off-by: Sasha Levin
    Cc: Wu Fengguang
    Cc: Marcelo Tosatti
    Cc: Gleb Natapov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Sasha Levin
     

19 Feb, 2013

1 commit

  • Connection tracking helpers have to drop packets under exceptional
    situations. Currently, the user gets the following logging message
    in case that happens:

    nf_ct_%s: dropping packet ...

    However, depending on the helper, there are different reasons why a
    packet can be dropped.

    This patch modifies the existing code to provide more specific
    error message in the scope of each helper to help users to debug
    the reason why the packet has been dropped, ie:

    nf_ct_%s: dropping packet: reason ...

    Thanks to Joe Perches for many formatting suggestions.

    Signed-off-by: Pablo Neira Ayuso

    Pablo Neira Ayuso
     

18 Jan, 2013

1 commit

  • Most SIP devices use a source port of 5060/udp on SIP requests, so the
    response automatically comes back to port 5060:

    phone_ip:5060 -> proxy_ip:5060 REGISTER
    proxy_ip:5060 -> phone_ip:5060 100 Trying

    The newer Cisco IP phones, however, use a randomly chosen high source
    port for the SIP request but expect the response on port 5060:

    phone_ip:49173 -> proxy_ip:5060 REGISTER
    proxy_ip:5060 -> phone_ip:5060 100 Trying

    Standard Linux NAT, with or without nf_nat_sip, will send the reply back
    to port 49173, not 5060:

    phone_ip:49173 -> proxy_ip:5060 REGISTER
    proxy_ip:5060 -> phone_ip:49173 100 Trying

    But the phone is not listening on 49173, so it will never see the reply.

    This patch modifies nf_*_sip to work around this quirk by extracting
    the SIP response port from the Via: header, iff the source IP in the
    packet header matches the source IP in the SIP request.

    Signed-off-by: Kevin Cernekee
    Acked-by: Eric Dumazet
    Cc: Patrick McHardy
    Signed-off-by: Pablo Neira Ayuso

    Kevin Cernekee
     

30 Aug, 2012

4 commits


10 Aug, 2012

2 commits

  • Within SIP messages IPv6 addresses are enclosed in square brackets in most
    cases, with the exception of the "received=" header parameter. Currently
    the helper fails to parse enclosed addresses.

    This patch:

    - changes the SIP address parsing function to enforce square brackets
    when required, and accept them when not required but present, as
    recommended by RFC 5118.

    - adds a new SDP address parsing function that never accepts square
    brackets since SDP doesn't use them.

    With these changes, the SIP helper correctly parses all test messages
    from RFC 5118 (Session Initiation Protocol (SIP) Torture Test Messages
    for Internet Protocol Version 6 (IPv6)).

    Signed-off-by: Patrick McHardy
    Signed-off-by: Pablo Neira Ayuso

    Patrick McHardy
     
  • Commit 3a8fc53a (netfilter: nf_ct_helper: allocate 16 bytes for the helper
    and policy names) introduced a bug in the SIP helper, the helper name is
    sprinted to the sip_names array instead of instead of into the helper
    structure. This breaks the helper match and the /proc/net/nf_conntrack_expect
    output.

    Signed-off-by: Patrick McHardy
    Signed-off-by: Pablo Neira Ayuso

    Patrick McHardy
     

16 Jun, 2012

2 commits


06 Jun, 2011

1 commit

  • Following error is raised (and other similar ones) :

    net/ipv4/netfilter/nf_nat_standalone.c: In function ‘nf_nat_fn’:
    net/ipv4/netfilter/nf_nat_standalone.c:119:2: warning: case value ‘4’
    not in enumerated type ‘enum ip_conntrack_info’

    gcc barfs on adding two enum values and getting a not enumerated
    result :

    case IP_CT_RELATED+IP_CT_IS_REPLY:

    Add missing enum values

    Signed-off-by: Eric Dumazet
    CC: David Miller
    Signed-off-by: Pablo Neira Ayuso

    Eric Dumazet