linux/net/ipv6/ipv6_sockglue.c
<<
>>
Prefs
   1/*
   2 *      IPv6 BSD socket options interface
   3 *      Linux INET6 implementation
   4 *
   5 *      Authors:
   6 *      Pedro Roque             <roque@di.fc.ul.pt>
   7 *
   8 *      Based on linux/net/ipv4/ip_sockglue.c
   9 *
  10 *      This program is free software; you can redistribute it and/or
  11 *      modify it under the terms of the GNU General Public License
  12 *      as published by the Free Software Foundation; either version
  13 *      2 of the License, or (at your option) any later version.
  14 *
  15 *      FIXME: Make the setsockopt code POSIX compliant: That is
  16 *
  17 *      o       Truncate getsockopt returns
  18 *      o       Return an optlen of the truncated length if need be
  19 *
  20 *      Changes:
  21 *      David L Stevens <dlstevens@us.ibm.com>:
  22 *              - added multicast source filtering API for MLDv2
  23 */
  24
  25#include <linux/module.h>
  26#include <linux/capability.h>
  27#include <linux/errno.h>
  28#include <linux/types.h>
  29#include <linux/socket.h>
  30#include <linux/sockios.h>
  31#include <linux/net.h>
  32#include <linux/in6.h>
  33#include <linux/mroute6.h>
  34#include <linux/netdevice.h>
  35#include <linux/if_arp.h>
  36#include <linux/init.h>
  37#include <linux/sysctl.h>
  38#include <linux/netfilter.h>
  39#include <linux/slab.h>
  40
  41#include <net/sock.h>
  42#include <net/snmp.h>
  43#include <net/ipv6.h>
  44#include <net/ndisc.h>
  45#include <net/protocol.h>
  46#include <net/transp_v6.h>
  47#include <net/ip6_route.h>
  48#include <net/addrconf.h>
  49#include <net/inet_common.h>
  50#include <net/tcp.h>
  51#include <net/udp.h>
  52#include <net/udplite.h>
  53#include <net/xfrm.h>
  54#include <net/compat.h>
  55
  56#include <asm/uaccess.h>
  57
  58struct ip6_ra_chain *ip6_ra_chain;
  59DEFINE_RWLOCK(ip6_ra_lock);
  60
  61int ip6_ra_control(struct sock *sk, int sel)
  62{
  63        struct ip6_ra_chain *ra, *new_ra, **rap;
  64
  65        /* RA packet may be delivered ONLY to IPPROTO_RAW socket */
  66        if (sk->sk_type != SOCK_RAW || inet_sk(sk)->inet_num != IPPROTO_RAW)
  67                return -ENOPROTOOPT;
  68
  69        new_ra = (sel>=0) ? kmalloc(sizeof(*new_ra), GFP_KERNEL) : NULL;
  70
  71        write_lock_bh(&ip6_ra_lock);
  72        for (rap = &ip6_ra_chain; (ra=*rap) != NULL; rap = &ra->next) {
  73                if (ra->sk == sk) {
  74                        if (sel>=0) {
  75                                write_unlock_bh(&ip6_ra_lock);
  76                                kfree(new_ra);
  77                                return -EADDRINUSE;
  78                        }
  79
  80                        *rap = ra->next;
  81                        write_unlock_bh(&ip6_ra_lock);
  82
  83                        sock_put(sk);
  84                        kfree(ra);
  85                        return 0;
  86                }
  87        }
  88        if (new_ra == NULL) {
  89                write_unlock_bh(&ip6_ra_lock);
  90                return -ENOBUFS;
  91        }
  92        new_ra->sk = sk;
  93        new_ra->sel = sel;
  94        new_ra->next = ra;
  95        *rap = new_ra;
  96        sock_hold(sk);
  97        write_unlock_bh(&ip6_ra_lock);
  98        return 0;
  99}
 100
 101static
 102struct ipv6_txoptions *ipv6_update_options(struct sock *sk,
 103                                           struct ipv6_txoptions *opt)
 104{
 105        if (inet_sk(sk)->is_icsk) {
 106                if (opt &&
 107                    !((1 << sk->sk_state) & (TCPF_LISTEN | TCPF_CLOSE)) &&
 108                    inet_sk(sk)->inet_daddr != LOOPBACK4_IPV6) {
 109                        struct inet_connection_sock *icsk = inet_csk(sk);
 110                        icsk->icsk_ext_hdr_len = opt->opt_flen + opt->opt_nflen;
 111                        icsk->icsk_sync_mss(sk, icsk->icsk_pmtu_cookie);
 112                }
 113                opt = xchg(&inet6_sk(sk)->opt, opt);
 114        } else {
 115                spin_lock(&sk->sk_dst_lock);
 116                opt = xchg(&inet6_sk(sk)->opt, opt);
 117                spin_unlock(&sk->sk_dst_lock);
 118        }
 119        sk_dst_reset(sk);
 120
 121        return opt;
 122}
 123
 124static int do_ipv6_setsockopt(struct sock *sk, int level, int optname,
 125                    char __user *optval, unsigned int optlen)
 126{
 127        struct ipv6_pinfo *np = inet6_sk(sk);
 128        struct net *net = sock_net(sk);
 129        int val, valbool;
 130        int retv = -ENOPROTOOPT;
 131
 132        if (optval == NULL)
 133                val=0;
 134        else {
 135                if (optlen >= sizeof(int)) {
 136                        if (get_user(val, (int __user *) optval))
 137                                return -EFAULT;
 138                } else
 139                        val = 0;
 140        }
 141
 142        valbool = (val!=0);
 143
 144        if (ip6_mroute_opt(optname))
 145                return ip6_mroute_setsockopt(sk, optname, optval, optlen);
 146
 147        lock_sock(sk);
 148
 149        switch (optname) {
 150
 151        case IPV6_ADDRFORM:
 152                if (optlen < sizeof(int))
 153                        goto e_inval;
 154                if (val == PF_INET) {
 155                        struct ipv6_txoptions *opt;
 156                        struct sk_buff *pktopt;
 157
 158                        if (sk->sk_type == SOCK_RAW)
 159                                break;
 160
 161                        if (sk->sk_protocol == IPPROTO_UDP ||
 162                            sk->sk_protocol == IPPROTO_UDPLITE) {
 163                                struct udp_sock *up = udp_sk(sk);
 164                                if (up->pending == AF_INET6) {
 165                                        retv = -EBUSY;
 166                                        break;
 167                                }
 168                        } else if (sk->sk_protocol != IPPROTO_TCP)
 169                                break;
 170
 171                        if (sk->sk_state != TCP_ESTABLISHED) {
 172                                retv = -ENOTCONN;
 173                                break;
 174                        }
 175
 176                        if (ipv6_only_sock(sk) ||
 177                            !ipv6_addr_v4mapped(&np->daddr)) {
 178                                retv = -EADDRNOTAVAIL;
 179                                break;
 180                        }
 181
 182                        fl6_free_socklist(sk);
 183                        ipv6_sock_mc_close(sk);
 184
 185                        /*
 186                         * Sock is moving from IPv6 to IPv4 (sk_prot), so
 187                         * remove it from the refcnt debug socks count in the
 188                         * original family...
 189                         */
 190                        sk_refcnt_debug_dec(sk);
 191
 192                        if (sk->sk_protocol == IPPROTO_TCP) {
 193                                struct inet_connection_sock *icsk = inet_csk(sk);
 194                                local_bh_disable();
 195                                sock_prot_inuse_add(net, sk->sk_prot, -1);
 196                                sock_prot_inuse_add(net, &tcp_prot, 1);
 197                                local_bh_enable();
 198                                sk->sk_prot = &tcp_prot;
 199                                icsk->icsk_af_ops = &ipv4_specific;
 200                                sk->sk_socket->ops = &inet_stream_ops;
 201                                sk->sk_family = PF_INET;
 202                                tcp_sync_mss(sk, icsk->icsk_pmtu_cookie);
 203                        } else {
 204                                struct proto *prot = &udp_prot;
 205
 206                                if (sk->sk_protocol == IPPROTO_UDPLITE)
 207                                        prot = &udplite_prot;
 208                                local_bh_disable();
 209                                sock_prot_inuse_add(net, sk->sk_prot, -1);
 210                                sock_prot_inuse_add(net, prot, 1);
 211                                local_bh_enable();
 212                                sk->sk_prot = prot;
 213                                sk->sk_socket->ops = &inet_dgram_ops;
 214                                sk->sk_family = PF_INET;
 215                        }
 216                        opt = xchg(&np->opt, NULL);
 217                        if (opt)
 218                                sock_kfree_s(sk, opt, opt->tot_len);
 219                        pktopt = xchg(&np->pktoptions, NULL);
 220                        kfree_skb(pktopt);
 221
 222                        sk->sk_destruct = inet_sock_destruct;
 223                        /*
 224                         * ... and add    ">NULL);
 224optlen<2a>)
 186                    226"> 126<2a>{
 190     in                 inet_csk(sk);
            module 83<> = sk_protocolinet_csk( 179                        2PROTOOPT<2a>;
 215            131"> 1312/a>
 153                        goto NULL<2a>)
valIPV62       el2e {
 135                if ( 108                    inet_sk( 153                        goto sk;
xchg(& = &l(val,  179                        2     2  }
 1412/a>
IPV62>val!20);
 152                if (optlen <2143"> 1432/a>
 153                        goto xchg(&rxskb">xc.>(&nbit"">xc.>(& 127     rxL127 href="+code=sk_destru="+code=val" class="sref">val,                                    179                        2sk);
 1482/a>
IPV62ptname 152                if (optlen <2150"> 1502/a>
 153                        goto xchg(&rxskb">xc.>(&nbit"">xc.>(& 127     rxoL127 href="+code=sk_destru="+code=val" class="sref">val,                                    179                        2F_INETopt<2a>;
sk_" namRECVHOPLIMIcue.ccode=IPV6_ADDRFORM" class="sref">IPV62poptval;
 152                if (optlen <21ef">sk
 153                        goto  1482a>)
xchg(&rxskb">xc.>(&nbit"">xc.>(&       rxhlim href="+code=sk_destru="+code=val" class="sref">val,                                    1602/a>
 179                        2TO_UDP 179                        2Tsizeof(i2) {
sk_" nam22l2HOPLIMIcue.ccode=IPV6_ADDRFORM" class="sref">IPV62ref">sk);
 152                if (optlen <2_INET6 153                        goto EBUSY<2a>;
xchg(&rxskb">xc.>(&nbit"">xc.>(&       rxohlim href="+code=sk_destru="+code=val" class="sref">val,                                   sk 179                        2T48"> 1482a>)
 179                        2       br2ak;
sk_" namRECVRTHDRue.ccode=IPV6_ADDRFORM" class="sref">IPV62170"> 1702/a>
 152                if (optlen <2LISHED 153                        goto xchg(&rxskb">xc.>(&nbit"">xc.>(&skval,                                    179                        2175"> 1752/a>
sk2 ||
sk_" nam22l2RTHDRue.ccode=IPV6_ADDRFORM" class="sref">IPV621ef">sk 152                if (optlen <2L48"> 1482a>;
 153                        goto xchg(&rxskb">xc.>(&nbit"">xc.>(&skoval,                                    1812/a>
 179                        2ref">sk);
sk);
sk_" namRECVHOPOPTSue.ccode=IPV6_ADDRFORM" class="sref">IPV62184"> 1842/a>
 152                if (optlen <2nt">/*
 153                        goto sk2an>
xchg(&rxskb">xc.>(&nbit"">xc.>(&nhopskb" href="+code=sk_destru="+code=val" class="sref">val, sk
 1482an>
 179                        2    */
sk);
sk_" nam22l2HOPOPTSue.ccode=IPV6_ADDRFORM" class="sref">IPV62191"> 1912/a>
 152                if (optlen <2TO_TCP 153                        goto sk);
xchg(&rxskb">xc.>(&nbit"">xc.>(&nohopskb" href="+code=sk_destru="+code=val" class="sref">val,  179                        2 ">sk21);
sk_" namRECVDSTOPTSue.ccode=IPV6_ADDRFORM" class="sref">IPV62148"> 1482a>;
 152                if (optlen <3specific<3a>;
 153                        goto xchg(&rxskb">xc.>(&nbit"">xc.>(&ndstskb" href="+code=sk_destru="+code=val" class="sref">val,  179                        3     } el3e {
sk_" nam22l2DSTOPTSue.ccode=IPV6_ADDRFORM" class="sref">IPV63205"> 2053/a>
 152                if (optlen <3s75"> 2053/);
 153                        goto  2053/);
xchg(&rxskb">xc.>(&nbit"">xc.>(&nodstskb" href="+code=sk_destru="+code=val" class="sref">val,  2053/>;
 179                        3prot,31);
sk_" namTCLASSue.ccode=IPV6_ADDRFORM" class="sref">IPV63ef">prot<3a>;
 152                if (optlen <3gram_ops<3a>;
 153                        goto  154           f ( 154           foptlen <3g05"> 2053  }
 153                        goto  2053>);
 223                    3ref">opt<3a>)
 154              -1e=optlen" class="sref">optlen <3g95"> 2053>);
 154                    NULL);
xchg(& 154                                                   2213/a>
 179                        3destruct<3a>;
/*
sk_" namRECVTCLASSue.ccode=IPV6_ADDRFORM" class="sref">IPV63v6_sockgl3n5|="co9id="L128" class936_soc32lue.c#L185" id="L185"" class="line" name"L152"> 152                if (optlen <3">optlen<3a>)
 153                        goto  126<3a>{
xchg(&rxskb">xc.>(&nbit"">xc.>(&val, sk);
                                   2053>);
 179                        3>valbool<3a>;
IPV63131"> 1313/a>
 152                if (optlen <3ef">NULL<3a>)
 153                        goto valxchg(&rxskb">xc.>(&nbit"">xc.>(&rxflow href="+code=sk_destru="+code=val" class="sref">val,                                    179                        3>6"> 126<3>))
sk;
sk_" namRECVPATHMTUue.ccode=IPV6_ADDRFORM" class="sref">IPV63195"> 2053lse
 152                if (optlen <3>val 3 0;
 153                        goto xchg(&rxskb">xc.>(&nbit"">xc.>(&rxa hr href="+code=sk_destru="+code=val" class="sref">val,  1413/a>
 179                        3143"> 1433/a>
sk_" namTRANSPARENcue.ccode=IPV6_ADDRFORM" class="sref">IPV63>optlen);
val/a>-&ga>-&ge" name="L177"> 1cap                   cap    ass="line" name=CAP_NET_ADMIv" class="sref">CAP_NET_ADMIv)/a>-&ga>-&ge" name="L177"> 1cap                   cap    ass="line" name=CAP_NET_RAW" class="sref">CAP_NET_RAW)f="+code=IPPROTO_TCP" class="sref">IPPR3>optval
, sk);
 179                        3195"> 2053/a>
 215           3ptname 152                if (optlen <3150"> 1503/a>
 153                        goto  223 2 bclasor " na we u"L1 *  onea    *        claet                    3 sizeof(i3t))
 108                    inet_sk(val,  179                        3ref">opt<3a>;
 =lass="sref">sk_" namRECVORIGDSTa> =ue.ccode=IPV6_ADDRFORM" class="sref">IPV631ef">sk
 152                if (optlen <3195"> 2053a>)
 153                        goto xchg(&rxskb">xc.>(&nbit"">xc.>(&rxsval,  1603/a>
 179                        3Tsizeof(i3) {
sk);
sk_" namHOPOPTSue.ccode=IPV6_ADDRFORM" class="sref">IPV63_INET6sk_" namRTHDRDSTOPTSue.ccode=IPV6_ADDRFORM" class="sref">IPV63_ef">opt<3a>;
sk_" namRTHDRue.ccode=IPV6_ADDRFORM" class="sref">IPV63 optvalsk_" namDSTOPTSue.ccode=IPV6_ADDRFORM" class="sref">IPV63_ef">skIPPR3T48"> 1483a>)
 193     lasstxode=np" class="sref">n lasstxode=np"ue.c#*ass="line" name"L1> 152         ,  1703/a>
 223                    3LISHED                    3Lsizeof(i3a>;
                    3       br3ak;
 152                i=   e=optlen" class="sref">optlen <3         3  }
                "L1a>  href="+code=sk_destruions" class="sref">pktoptio, opt<3/a>
                "L1a>  href=="+code=sk_destruions" class="sref">pktoptioe=optlen" class="sref">optlen <3 optval 153                        goto sk 152                if ( 193     lass   _hdr" class="sref"> lass   _hdr)/_sock( 1483a>;
 152                if>-&ge0x7 ||"+code=sk_destru"L152"> 152                ifoptlen <3       br3ak;
 153                        goto  1813/a>
 223                    3ref">sk);
                                sk);
 152         ipv6ue.c#!"+code=sk_protocol"namRTHDRlass="sref">sk_" namRTHDRue.c/a>-&ga>-&ge" name="L177"> 1cap                   cap    ass="line" name=CAP_NET_RAW" class="sref">CAP_NET_RAW)f  179                        3nt">/*
sk3an>
 216                        n lassrenew_ode=np"      ref="+code=pktopte=xchg" class="sref">xchg(&np-> 152         ipv6ue.c,#L146" id="L146" class="line" name="3 ef">sk
 193     lass   _hdr" class="sref"> lass   _hdr93"> 193    __user" class="sref">__userue.c#*)ass="line" name"L1a>                "L1a>  hre,#L146" id="L146" class="line" name="3 48"> 1483an>
 152                net_csk(sk_"S_ERR      IPPR3ref">sk);
                            class="line" nPTR_ERRlass="sref">sk_PTR_ERR       1813/a>
 179                        3TO_TCP 215           3ref">sk);
 223                    3rot, 31);
                                oINVAs, sk31);
 152         ipv6ue.c#=="+code=sk_destrul"namRTHDRlass="sref">sk_" namRTHDRue.c/a>-&ga>-&ge class="line" n6"> 216               a>-&ga>-&ge class="line" n6"> 216                          skIPPR3ref">sk 193     lassr _hdr" class="sref"> lassr _hdr9*ass="line" namerthdr" class="sref">rthdr        class="line" n6"> 216                          sk 1483a>;
rthdr    net_sk(IPPR4specific<4a>;
( 152      def"nedass="line" name=CONFIG_" namMIP6> 152      CONFIG_" namMIP6)/_sck( 152      def"nedass="line" name=CONFIG_" namMIP6_MODUL">sk_protocoloptlen <4ream_ops<4a>;
sk_" namSRCRT_TYPE_2ue.ccode=IPV6_ADDRFORM" class="sref">IPV64>PF_INET<4a>;
rthdr    net_sk( 152      hdr52"ue.c#!"+2/_sock(rthdr    net_sk( 2s_lef class="sref">sk 2s_lef ue.c#!"+1e=optlen" class="sref">optlen <4     } el4e {
 1meicky_don6> 152      meicky_don6 hre,  2054/a>
 179                        4s75"> 2054/);
 179                        4s85"> 2054/);
IPV64>95"> 2054/>;
 1meicky_don6> 152      meicky_don6 hre,  215           4prot,41);
 215           4enable 179                        4ef">prot<4a>;
 216                        n lassupdate_ode=np"      ref="+code=pktopt217                   et_csk( 1meicky_don6> 152      meicky_don6 hrecode=IPV6_ADDRFORM" class="sref">IPV64g05"> 2054  }
                   ode=IPV6_ADDRFORM" class="sref">IPV64g75"> 2054>);
n="sr_kfree_"      ref="+code=pktopt217                  ref="+code=pktopt217                  net_sk( 152      tot_52"     et_csk( 2054a>)
 179                        4g95"> 2054>);
 215           4f">NULL);
IPV64221"> 2214/a>
IPPR4destruct<4a>;
 193     n6_pktL127"> 127      n6_pktL12793"> 193    pkt"> 127     pkt hre, /*
 152                i=   e=optlen" class="sref">optlen <4">optlen<4a>)
 153                        goto  126<4a>{
 152                if ( 193     n6_pktL127"> 127      n6_pktL127)/_sck(                "L1a>  href=="+code=sk_destruions" class="sref">pktoptioe=optlen" class="sref">optlen <4ref">sk);
 153                        goto  2054>);
 179                        4>valbool<4a>;
copy_from_user     a>-&g3"> 193    pkt"> 127     pkt hreref="+code=pktopt217a>                "L1a>  hre,a href="me="L193"> 193     n6_pktL127"> 127      n6_pktL127) f="+code=IPPROTO_TCP" class="sref">IPPR4PROTOOPT<4a>;
                                sk_oFAULc goto  1314/a>
 179                        4ef">NULL<4a>)
 215           4f">valnet_sk( 127     pkt hre.>(&n li6_ifindexue.c#!"+code=sk_protoco=inet_sk" class="sref">net_sk(optlen <4       el4e {
 153                        goto  126<4>))
xchg(& 127     meicky_pktL127 hre.>(&n li6_ifindexue.c#"+code=sk_protocopkt"> 127     pkt hre.>(&n li6_ifindexue.co sk;
xchg(& 127     meicky_pktL127 hre.>(&ipi6_addrue.c#"+code=sk_protocopkt"> 127     pkt hre.>(&ipi6_addrue.co  2054lse
 179                        4     4  }
 215           4141"> 1414/a>
 179                        4>val!40);
sk_" nam22l2PKTOPTIONSue.ccode=IPV6_ADDRFORM" class="sref">IPV64143"> 1434/a>
IPPR4optname))
 193     lasstxode=np" class="sref">n lasstxode=np"ue.c#*ass="line" name"L1> 152         f="+code=sk_destruions" class="sref">pktoptio,  193    msghdr" class="sref">msghdr93"> 193    msg" class="sref">msgptio,  126<4/a>
 193    flowi6> 152      flowi693"> 193    fl6> 152      fl6ptio, sk);
 193    juninet_sk" class="juniptio,  2054/a>
 179                        4ptname 193    memse1> 152      memse1     a>-&g3"> 193    fl6> 152      fl6ptio, 0,a href="3"> 193    fl6> 152      fl6ptio) et_csk( 1504/a>
 193    fl6> 152      fl6ptio.>(&net_sk( 1414a>:
 193    fl6> 152      fl6ptio.>(&net_sk( 152                i=   e=optlen" class="sref">optlen <4F_INET 1update> 152      update    et_csk( 223                    41ef">sk
                    4195"> 2054a>)
                    4       br4ak;
                                oINVAs,  1604/a>
 152                ifoptlen <4TO_UDP 179                        4Tsizeof(i4) {
sk);
 216                        n="sr_kmalloc      re href="*ass="line" name"L1> 152         ) +"+code=sk_destru"L152"> 152                ref="+code=pktoptGFP_KERNEs" class="sref">GFP_KERNEs     et_csk(                                sk_oNOBUFS,                   f=="+code=sk_destruions" class="sref">pktoptioe=optlen" class="sref">optlen <4 optval 179                        4Tef">sk 179                        4T95"> 2054a>)
 193    memse1> 152      memse1     f="+code=pktopt217                  re0re href="*ass="line" name"L1> 152         ) et_csk(                  net_sk( 152      tot_52"        href="*ass="line" name"L1> 152         ) +"+code=sk_destru"L152"> 152                et_csk( 1604/a>
                                sk_oFAULc goto copy_from_user     ass="line" name"L1> 152         +1ref="+code=pktopt217a>                "L1a>  hre,a+code=sk_destru"L152"> 152                )f  1don6> 152      don6 hre,  193    msg" class="sref">msgptio.>(& 152      msg_control52"               152                et_csk( 193    msg" class="sref">msgptio.>(& 152      msg_control       (void*) ass="line" name"L1> 152         +1 et_csk(sk                            name="L153"> 1datagram_send_ctl> 152      datagram_send_ctl     ass="line" namene1> 152      net hreref="+code=pktopt=inet_sk" class="sref">rea>-&g3"> 193    msg" class="sref">msgptiorea>-&g3"> 193    fl6> 152      fl6ptio, f="+code=pktopt217                  rea>-&g3"> 193    juninet_sk" class="juniptiorea>-&g3"> 193    juninet_sk" class="juniptior#L157" id="L157" class="line" name="4195"> 2054a>;
-&g3"> 193    juninet_sk" class="juniptio et_csk(                        f  1don6> 152      don6 hre,  1814/a>
 1update> 152      update    code=IPV6_ADDRFORM" class="sref">IPV64ref">sk);
                                  sk);
 216                        n lassupdate_ode=np"      ref="+code=pktopt217                   et_csk( 1don6> 152      don6 hrecode=IPV6_ADDRFORM" class="sref">IPV64roptlen
                   ode=IPV6_ADDRFORM" class="sref">IPV64 ">sk4an>
n="sr_kfree_"      ref="+code=pktopt217                  ref="+code=pktopt217                  net_sk( 152      tot_52"     et_csk(sk
 179                        4 48"> 1484an>
 215           4    */
sk_" namUNICASTmHOPS hrecode=IPV6_ADDRFORM" class="sref">IPV64ref">sk);
 152                if (optlen <4 81"> 1814/a>
 153                        goto  154           f 154           f (optlen <4 ef">sk);
 153                        goto xchg(&           hop_limi7               154                                                  sk41);
 179                        4ref">sk 179                        4 48"> 1484a>;
sk_" namMULTICASTmHOPS hrecode=IPV6_ADDRFORM" class="sref">IPV65specific<5a>;
net_sk(IPV65ream_ops<5a>;
 179                        5>PF_INET<5a>;
 152                if (optlen <5_cookie);
 153                        goto  154           f 154           f (optlen <5udp_prot<5a>;
 153                        goto  2055/a>
xchg(&nmd="t_hop"       (+code=sk_destru="+54"> 154           =="-1 ?151" class="line" namDoFAULc_MCASTHOPSlass="sref">sk_" namDoFAULc_MCASTHOPS     :"+code=sk_destru="+54"> 154           et_csk( 2055/);
                                   2055/);
 179                        5>95"> 2055/>;
 179                        5rot, 51);
sk_" namMULTICASTmLOOP hrecode=IPV6_ADDRFORM" class="sref">IPV65prot,51);
 152                if (optlen <5enable 153                        goto prot<5a>;
 154           !"+code=sk_protoco="+code=val" class="sref">vale=optlen" class="sref">optlen <5e    } el5a>;
 153                        goto xchg(&val,  2055  }
                                   2055>);
 179                        5>85"> 2055a>)
 179                        5g95"> 2055>);
sk_" namUNICASTmIF hrecode=IPV6_ADDRFORM" class="sref">IPV65f">NULL);
IPPR5frot,5>);
 193    OTO_devic6> 152      OTO_devic6ue.c#*ass="line" namedev> 152      de         name="L153"> 1ions" class="sref">pktoptio,  2215/a>
 193    ifindex class="sref">n findexue.co /*
 152                i!=a href="+code=optlen" class="sref">optlen <5v6_sockgl5n5|="co9id="L128" class956_soc52lue.c#L185" id="L185"""""""""line" name="L153"> 153                        goto optlen<5a>)
 126<5a>{
 193    ifindex class="sref">n findexue.c   (+code=sk_destru__forc6> 152      __forc6ue.c +cod3"> 193    Otoh                Otoh      (+code=sk_destru__forc6> 152      __forc6ue.c +code=sk_destru__be/a>
e+code=sk_destru="+54"> 154           et_csk(sk);
n findexue.c     ei"+code=IPPROTO_TCP" class="sref">IPPR5f95"> 2055>);
xchg(&                                   179                        5131"> 1315/a>
 215           5ef">NULL<5a>)
val 152      de         name="L153"> 1dev_gTO_by_index class="sref">ndev_gTO_by_index      n findexue.c et_csk(                                oa> =NOTAVAIs goto  1dev> 152      de     e=optlen" class="sref">optlen <5>6"> 126<5>))
 179                        51ef">sk;
 152      dev_pu1       179                        5195"> 2055lse
 179                        5>val 5 0;
                                oINVAs, net_sk(optlen <5141"> 1415/a>
 179                        5>val!50);
 1435/a>
xchg(& 193    ifindex class="sref">n findexue.co                                    179                        5>6"> 126<5/a>
 215           5>ef">sk);
 179                        5>95"> 2055/a>
sk_" namMULTICASTmIF hrecode=IPV6_ADDRFORM" class="sref">IPV65ptnamenet_sk(IPV65150"> 1505/a>
 179                        5141"> 1415a>:
 152                if (optlen <51val!5t))
 153                        goto  154          ei"+code=IPPROTO_TCP" class="sref">IPPR51optlen;
 193    OTO_devic6> 152      OTO_devic6ue.c#*ass="line" namedev> 152      de     o  126<5a>;
sk
net_sk(net_sk( 154          e#L157" id="L157" class="line" name="5195"> 2055a>)
 153                        goto  1605/a>
 152      de         name="L153"> 1dev_gTO_by_index class="sref">ndev_gTO_by_index       154           et_csk( 1dev> 152      de     ei"+code=IPPROTO_TCP" class="sref">IPPR5Tsizeof(i5) {
                                oNODEV goto  179                        5_INET6 215           51optlen;
 152      dev_pu1       179                        5 optval 215           51ef">skxchg(& 193    ="+54"> 154                 2055a>)
 193    /a>                                   179                        5 60"> 1605/a>
sk_" namADD_MEMBERSHIP hrecode=IPV6_ADDRFORM" class="sref">IPV65LISHEDsk_" namDROP_MEMBERSHIP hrecode=IPV6_ADDRFORM" class="sref">IPV65Lsizeof(i5a>;
IPPR5       br5ak;
 193     lassmreq class="sref">n lassmreque.c +code=sk_destrumreq class="sref">nmreque.c179"> 179                        5 INET6 152                if ( 193     lassmreq class="sref">n lassmreque.cde=optlen" class="sref">optlen <5 optval 153                        goto sk 179                        5195"> 2055a>;
                                )hg(& 179                        5181"> 1815/a>
 179                        5ref">sk);
                                sk_oFAULc goto sk);
copy_from_user     a>-&g3"> 193    mreq class="sref">nmreque.cref="+code=pktopt217a>                "L1a>  hre,a href="me="L193"> 193     lassmreq class="sref">n lassmreque.cdee#L157" id="L157" class="line" name="5 INET6
 179                        51optlen
sk5an>
sk_" namADD_MEMBERSHIP hree#L157" id="L157" class="line" name="5 ef">sk
                           3"> 193     lass="sr_mc_joi"> 152       lass="sr_mc_joi"      ref="+code=pktoptmreq class="sref">nmreque.c.>(&n lv6mr_ifindexef">rea>-&g3"> 193    mreq class="sref">nmreque.c.>(&ipv6mr_multiaddr    e179"> 179                        5 48"> 1485an>
 179                        5    */
                           3"> 193     lass="sr_mc_dro=xchg" class="sr lass="sr_mc_dro=      ref="+code=pktoptmreq class="sref">nmreque.c.>(&n lv6mr_ifindexef">rea>-&g3"> 193    mreq class="sref">nmreque.c.>(&ipv6mr_multiaddr    e179"> 179                        5ref">sk);
 179                        5 81"> 1815/a>
 215           5TO_TCPsk_" namJOIN_ANYCAST hrecode=IPV6_ADDRFORM" class="sref">IPV65 ef">sk);
sk_" namLEAVE_ANYCAST hrecode=IPV6_ADDRFORM" class="sref">IPV65 INET6IPPR5rot, 51);
 193     lassmreq class="sref">n lassmreque.c +code=sk_destrumreq class="sref">nmreque.c179"> 179                        5 ">sk51);
sk 152                if ( 193     lassmreq class="sref">n lassmreque.cde=optlen" class="sref">optlen <5 48"> 1485a>;
 153                        goto                                 sk_oFAULc goto copy_from_user     a>-&g3"> 193    mreq class="sref">nmreque.cref="+code=pktopt217a>                "L1a>  hre,a href="me="L193"> 193     lassmreq class="sref">n lassmreque.cdee#L157" id="L157" class="line" name="6_cookie);
 179                        6     } el6e {
sk_" namJOIN_ANYCAST hree#L157" id="L157" class="line" name="6_6p_prot<6a);
                           3"> 193     lass="sr_ac_joi"> 152       lass="sr_ac_joi"      ref="+code=pktoptmreq class="sref">nmreque.c.>(&n lv6mr_ifindexef">rea>-&g3"> 193    mreq class="sref">nmreque.c.>(&ipv6mr_acaddr    e179"> 179                        6s75"> 2056/);
 179                        6s85"> 2056/);
                           3"> 193     lass="sr_ac_dro=xchg" class="sr lass="sr_ac_dro=      ref="+code=pktoptmreq class="sref">nmreque.c.>(&n lv6mr_ifindexef">rea>-&g3"> 193    mreq class="sref">nmreque.c.>(&ipv6mr_acaddr    e179"> 179                        6s95"> 2056/>;
 179                        6rot, 61);
 215           6prot,61);
sk_MCASTmJOIN_GROUP hrecode=IPV6_ADDRFORM" class="sref">IPV66enablesk_MCASTmLEAVE_GROUP hrecode=IPV6_ADDRFORM" class="sref">IPV66ecookie;
IPPR6e    } el6a>;
 193    group_req class="sref">ngroup_reque.c +code=sk_destrugreq class="sref">ngreque.c179"> 179                        6edp_prot<6a>;
 193        addr   6> 152          addr   6ue.c#*ass="line" nameps  6> 152      ps  6ue.c179"> 179                        6e6p_prot<6  }
 2056>);
 152                if ( 193    group_req class="sref">ngroup_reque.cee#L157" id="L157" class="line" name="6>85"> 2056a>)
 153                        goto  2056>);
 179                        6f">NULL);
                                sk_oFAULc goto copy_from_user     a>-&g3"> 193    greq class="sref">ngreque.cref="+code=pktopt217a>                "L1a>  hre,a href="me="L193"> 193    group_req class="sref">ngroup_reque.ceee#L157" id="L157" class="line" name="6221"> 2216/a>
 179                        6destruct<6a>;
ngreque.c.>(&ngr_groupue.c.>(& 152       s_familyue.c#!"+code=sk_protocoAF_INET6> 152      AF_INET6ue.cei"+code=IPPROTO_TCP" class="sref">IPPR6nt">/*
                                oa> =NOTAVAIs goto  179                        6d6p_prot<6a>)
 215           626"> 126<6a>{
 193    ps  6> 152      ps  6ue.c   (me="L193"> 193        addr   6> 152          addr   6ue.c#*)a>-&g3"> 193    greq class="sref">ngreque.c.>(&ngr_groupue.c179"> 179                        6d85"> 2056>);
sk_MCASTmJOIN_GROUP hree#L157" id="L157" class="line" name="6295"> 2056>);
                           3"> 193     lass="sr_mc_joi"> 152       lass="sr_mc_joi"      ref="+code=pktoptgreq class="sref">ngreque.c.>(& 152      gr_interfac6ef">r#L157" id="L157" class="line" name="6>valbool<6a>;
-&g3"> 193    ps  6> 152      ps  6ue.cnet_sk(s  6_addr    e179"> 179                        6PROTOOPT<6a>;
 179                        6131"> 1316/a>
                           3"> 193     lass="sr_mc_dro=xchg" class="sr lass="sr_mc_dro=      ref="+code=pktoptgreq class="sref">ngreque.c.>(& 152      gr_interfac6ef">r#L157" id="L157" class="line" name="6>estruct<6a>)
-&g3"> 193    ps  6> 152      ps  6ue.cnet_sk(s  6_addr    e179"> 179                        6Pt">/* 179                        6       el6e {
 215           6izeof(int6) {
sk_MCASTmJOIN_SOURCE_GROUP hrecode=IPV6_ADDRFORM" class="sref">IPV66>6"> 126<6>))
sk_MCASTmLEAVE_SOURCE_GROUP hrecode=IPV6_ADDRFORM" class="sref">IPV66>85"> 2056a>;
sk_MCASTmBLOCK_SOURCE hrecode=IPV6_ADDRFORM" class="sref">IPV66>95"> 2056lse
sk_MCASTmUNBLOCK_SOURCE hrecode=IPV6_ADDRFORM" class="sref">IPV66>val 6 0;
IPPR6     6  }
 193    group_source_req class="sref">ngroup_source_reque.c +code=sk_destrugreq" class="sref">ngreq"ue.c179"> 179                        6141"> 1416/a>
 193    om                  "m   ef">ref="+code=pktoptadd               addue.c179"> 179                        61estruct<60);
 1436/a>
 152                if ( 193    group_source_req class="sref">ngroup_source_reque.cee#L157" id="L157" class="line" name="6optname))
 153                        goto copy_from_user     a>-&g3"> 193    greq" class="sref">ngreq"ue.cref="+code=pktopt217a>                "L1a>  hre,a href="3"> 193    greq" class="sref">ngreq"ue.c))ei"+code=IPPROTO_TCP" class="sref">IPPR6>6"> 126<6/a>
                                sk_oFAULc goto sk);
 179                        6>95"> 2056/a>
 215           6ptnamengreq"ue.c.>(&ngsr_groupue.c.>(& 152       s_familyue.c#!"+code=sk_protocoAF_INET6> 152      AF_INET6ue.c ||ine" name="L215"> 215           6p/a>     6/a>
ngreq"ue.c.>(&ngsr_sourceue.c.>(& 152       s_familyue.c#!"+code=sk_protocoAF_INET6> 152      AF_INET6ue.cei"+code=IPPROTO_TCP" class="sref">IPPR6141"> 1416a>:
                                oa> =NOTAVAIs goto  179                        6>e_inval<6a>;
 215           6pptnamesk_MCASTmBLOCK_SOURCE hreei"+code=IPPROTO_TCP" class="sref">IPPR61optlen;
 193    om                  "m   ef">   3"> 193    MCASTmEXCLUDElass="sref">sk_MCASTmEXCLUDE goto  126<6a>;
sk
sk_MCASTmUNBLOCK_SOURCE hreei"+code=IPPROTO_TCP" class="sref">IPPR6195"> 2056a>)
 193    om                  "m   ef">   3"> 193    MCASTmEXCLUDElass="sref">sk_MCASTmEXCLUDE goto  1606/a>
sk_MCASTmJOIN_SOURCE_GROUP hreei"+code=IPPROTO_TCP" class="sref">IPPR6TO_UDP 193        addr   6> 152          addr   6ue.c#*ass="line" nameps  6> 152      ps  6ue.c179"> 179                        6Tsizeof(i6) {
 193    ps  6> 152      ps  6ue.c   (me="L193"> 193        addr   6> 152          addr   6ue.c#*)a>-&g3"> 193    greq" class="sref">ngreq"ue.c.>(&ngsr_groupue.c179"> 179                        6Tptname                           3"> 193     lass="sr_mc_joi"> 152       lass="sr_mc_joi"      ref="+code=pktoptgreq" class="sref">ngreq"ue.c.>(& 152      gsr_interfac6ef">r#L157" id="L157" class="line" name="61optlen;
-&g3"> 193    ps  6> 152      ps  6ue.cnet_sk(s  6_addr    e179"> 179                        6 optval/* prior joi" w/ different source is ok */sk                         a>-&ga>-&ge class="line" n/a>                         !       sk_oa> =INUSE hree#L157" id="L157" class="line" name="6T95"> 2056a>)
 179                        6       br6ak;
   3"> 193    MCASTmINCLUDElass="sref">sk_MCASTmINCLUDEue.c179"> 179                        6 60"> 1606/a>
/* MCASTmLEAVE_SOURCE_GROUP */IPPR6Lsizeof(i6a>;
   3"> 193    MCASTmINCLUDElass="sref">sk_MCASTmINCLUDEue.c179"> 179                        6 e_inval<6ak;
 215           6 optlen
                           3"> 193     l6_mc_source class="sref">n l6_mc_source      ref="+code=pktopt=inet_sk" class="sref">rea>-&g3"> 193    greq" class="sref">ngreq"ue.ce179"> 179                        6 optval 179                        6 ef">sk 215           6 95"> 2056a>;
sk_MCASTmMSFILTER hrecode=IPV6_ADDRFORM" class="sref">IPV66       br6ak;
IPPR6         6  }
 193    group_filter" class="sref">group_filterue.c#*ass="line" namegsfnet_sk" class="gsfue.c179"> 179                        6181"> 1816/a>
 179                        6ref">sk);
 152                if (sk_GROUP_FILTER_SIZE     0ee#L157" id="L157" class="line" name="6ref">sk);
 153                        goto  152                ifg(nsysctl_   mem_max hreei"+code=IPPROTO_TCP" class="sref">IPPR61optlen
                                sk_oNOBUFS goto  179                        6 ef">sk
 215           6 48"> 1486an>
 193    kmallocnet_sk" class="kmalloc       152                ,ass="line" nameGFP_KERNEs" class="sref">GFP_KERNEsue.ce179"> 179                        6    */
 1gsfnet_sk" class="gsfue.cei"+code=IPPROTO_TCP" class="sref">IPPR6ref">sk);
                                sk_oNOBUFS goto  1816/a>
 179                        6TO_TCP 215           6 ef">sk);
                                sk_oFAULc goto copy_from_user      name="L177"> 1gsfnet_sk" class="gsfue.cref="+code=pktopt217a>                "L1a>  hre,a  152                )ei"+code=IPPROTO_TCP" class="sref">IPPR6rot, 61);
 1gsfnet_sk" class="gsfue.ce179"> 179                        6 optval 179                        6ref">sk 215           6 48"> 1486a>;
/* numsrcifg(<= (4G-140)/128 overflow in 32 bits */ 215           7ream_ops<7a>;
IPPR7>PF_INET<7a>;
 1gsfnet_sk" class="gsfue.ce179"> 179                        7_cookie);
                                sk_oNOBUFS goto  179                        7udp_prot<7a>;
 215           7_6p_prot<7a);
sk_GROUP_FILTER_SIZE     ass="line" namegsfnet_sk" class="gsfue.cnet_sk( 152                )i"+code=IPPROTO_TCP" class="sref">IPPR7>7p_prot<7a);
 1gsfnet_sk" class="gsfue.ce179"> 179                        7_8p_prot<7a);
                                oINVAs,  2057/>;
 179                        7rot, 71);
 215           7prot,71);
                           3"> 193     l6_mc_msfilter" class="sref"> l6_mc_msfilter      ref="+code=pktoptgsfnet_sk" class="gsfue.ce179"> 179                        7enable 1gsfnet_sk" class="gsfue.ce179"> 179                        7ecookie;
 179                        7rdp_prot<7a>;
 215           7p6p_prot<7  }
sk_" namROUTER_ALERT hrecode=IPV6_ADDRFORM" class="sref">IPV67g75"> 2057>);
 152                if (optlen <7>85"> 2057a>)
 153                        goto  2057>);
                           3"> 193     l6_ra_contro                 l6_ra_contro       ref="+code=pktopt="+54"> 154           et_csk(NULL);
 179                        7frot,7>);
sk_" namMTU_DISCOVER hrecode=IPV6_ADDRFORM" class="sref">IPV67221"> 2217/a>
 152                if (optlen <7destruct<7a>;
 153                        goto /*
 154          if (sk_" _PMTUDISC_DONT    i||ef="+code=pktopt="+54"> 154          ifg(sk_" _PMTUDISC_PROBE       153                        goto  1e=xchg" class="sref">xchg(& 193    ="+54"> 154                 126<7a>{
 193    /a>                                   2057>);
 179                        7f95"> 2057>);
sk_" namMTU hrecode=IPV6_ADDRFORM" class="sref">IPV67>valbool<7a>;
 152                if (optlen <7PROTOOPT<7a>;
 153                        goto  1317/a>
 154          if>-&ga>-&ge class="line" n"L154"> 154          if (sk_" namMINmMTU       153                        goto /* 1e=xchg" class="sref">xchg(& 193    ="+54"> 154                 193    /a>                                   179                        7>6"> 126<7>))
sk_" namRECVERR hrecode=IPV6_ADDRFORM" class="sref">IPV67>85"> 2057a>;
 152                if (optlen <7P95"> 2057lse
 153                        goto xchg(&recverr       3"> 193    ="+boo                ="+boo  goto  1="+54"> 154             1317/a>
 193    =inet_sk" class="sref">net_sk(                                   1437/a>
 179                        7optname))
sk_" namFLOWINFO_SEND hrecode=IPV6_ADDRFORM" class="sref">IPV67>optlen);
 152                if (optlen <7>6"> 126<7/a>
 153                        goto  2057>);
xchg(& 193    ="+boo                ="+boo  goto  2057/a>
                                   179                        7p/a>     7/a>
sk_" namFLOWLABEL_MGR hrecode=IPV6_ADDRFORM" class="sref">IPV67141"> 1417a>:
                           3"> 193     lassflowlabel_                   lassflowlabel_         ref="+code=pktopt217a>                "L1a>  hre,a  152                )179"> 179                        7pestruct<7t))
 179                        7p43"> 1437a>;
sk_" namIPSEC_POLICY hrecode=IPV6_ADDRFORM" class="sref">IPV671ptnamesk_" namXFRM_POLICY hrecode=IPV6_ADDRFORM" class="sref">IPV671optlen;
                                oPERM goto  126<7a>;
 1capablenet_sk" class="capable      optlen <71ef">sk
 179                        7p95"> 2057a>)
                           3"> 193    xfrm_user_policy> 152      xfrm_user_policy      ref="+code=pktopt217ipv6               "L1ipv6    ref="+code=pktopt217a>                "L1a>  hre,a  152                )179"> 179                        7       br7ak;
 179                        7160"> 1607/a>
 179                        7141"> 1417 ||
sk_" namADDR_PREFERENCES hrecode=IPV6_ADDRFORM" class="sref">IPV67Tsizeof(i7) {
IPPR7 e_inval<7>);
 193    p">sket_sk" class="pass               193    p">sma=inet_sk" class="p">sma=i       ~        152                if (optlen <7 ef">sk 153                        goto  2057a>)
 179                        7       br7ak;
                                oINVAs,  1607/a>
 179                        7LISHED/* check PUBLIC/TMP/PUBTMP_DoFAULc conflicts */ 154          if>-&glass="line" name=" namPREFER_SRC_PUBLIClass="sref">sk_" namPREFER_SRC_PUBLIC    |ine" name="L215"> 215           7 e_inval<7ak;
sk_" namPREFER_SRC_TMP    |ine" name="L215"> 215           7 ptnamesk_" namPREFER_SRC_PUBTMP_DoFAULc    )eL"+code=IPPROTO_TCP" class="sref">IPPR7 optlen
sk_" namPREFER_SRC_PUBLIC    code=IPV6_ADDRFORM" class="sref">IPV67 optvalsket_sk" class="pass     |="+code=sk_destru" namPREFER_SRC_PUBLIClass="sref">sk_" namPREFER_SRC_PUBLIC    , sk 179                        7 95"> 2057a>;
sk_" namPREFER_SRC_TMP    code=IPV6_ADDRFORM" class="sref">IPV67       br7ak;
sket_sk" class="pass     |="+code=sk_destru" namPREFER_SRC_TMPlass="sref">sk_" namPREFER_SRC_TMP    179"> 179                        7         7  }
 179                        7181"> 1817/a>
sk_" namPREFER_SRC_PUBTMP_DoFAULc    code=IPV6_ADDRFORM" class="sref">IPV67 sizeof(i7>);
 179                        71e_inval<7>);
IPV67 ptname
 1pass_skip_pubtm=xchg" class="srpass_skip_pubtm=    179"> 179                        7 optlen
IPV67 optval
 153                        goto sk
 215           7 48"> 1487an>
 179                        7    */
 193    p">sma=inet_sk" class="p">sma=i     f>-&g  ~ass="line" name=" namPREFER_SRC_PUBLIClass="sref">sk_" namPREFER_SRC_PUBLIC    |ine" name="L215"> 215           7ref">sk);
 193    " namPREFER_SRC_TMPlass="sref">sk_" namPREFER_SRC_TMP    )179"> 179                        7 81"> 1817/a>
 1pass_skip_pubtm=xchg" class="srpass_skip_pubtm=    code=IPV6_ADDRFORM" class="sref">IPV67TO_TCPsk);
/* check HOME/COA conflicts */ 154          if>-&glass="line" name=" namPREFER_SRC_HOMElass="sref">sk_" namPREFER_SRC_HOME    |ss="line" name=" namPREFER_SRC_COAlass="sref">sk_" namPREFER_SRC_COA    )eL"+code=IPPROTO_TCP" class="sref">IPPR7rot, 71);
sk_" namPREFER_SRC_HOME    code=IPV6_ADDRFORM" class="sref">IPV67Toptval 179                        7ref">sksk_" namPREFER_SRC_COA    code=IPV6_ADDRFORM" class="sref">IPV67T48"> 1487a>;
 193    p">sket_sk" class="pass     |="+code=sk_destru" namPREFER_SRC_COAlass="sref">sk_" namPREFER_SRC_COA    179"> 179                        8specific<8a>;
IPV68ream_ops<8a>;
 1pass_skip_coaxchg" class="srpass_skip_coa    179"> 179                        8s2am_ops<8aa>
IPV68_cookie);
 153                        goto  215           8udp_prot<8a>;
 215           8u6p_prot<8a);
 193    p">sma=inet_sk" class="p">sma=i     f>-&g  ~+code=sk_destru" namPREFER_SRC_COAlass="sref">sk_" namPREFER_SRC_COA    179"> 179                        8s7p_prot<8a);
 1pass_skip_coaxchg" class="srpass_skip_coa    code=IPV6_ADDRFORM" class="sref">IPV68_8p_prot<8a);
IPV68_9p_prot<8a>;
/* check CGA/NONCGA conflicts */ 154          if>-&glass="line" name=" namPREFER_SRC_CGAlass="sref">sk_" namPREFER_SRC_CGA    |ss="line" name=" namPREFER_SRC_NONCGAlass="sref">sk_" namPREFER_SRC_NONCGA    )eL"+code=IPPROTO_TCP" class="sref">IPPR8prot,81);
sk_" namPREFER_SRC_CGA    code=IPV6_ADDRFORM" class="sref">IPV68enablesk_" namPREFER_SRC_NONCGA    code=IPV6_ADDRFORM" class="sref">IPV68ecookie;
IPV68e    } el8a>;
 179                        8rdp_prot<8a>;
IPV68p6p_prot<8  }
 153                        goto  2058>);
 215           8>85"> 2058a>)
IPV68g95"> 2058>);
xchg(&nsrcpass"       ass="line" name=e=xchg" class="sref">xchg(&nsrcpass"     a>-&ge class="line" np">sma=inet_sk" class="p">sma=i    ) |ef="+code=pktoptp">sket_sk" class="pass    o NULL);
                                   179                        8221"> 2218/a>
 179                        8destruct<8a>;
 215           8nt">/*
sk_" namMINHOPCOUNT    code=IPV6_ADDRFORM" class="sref">IPV68ndp_prot<8n5|="co9id="L128" class986_soc82lue.c#L185" id="L185"" class="line" name"L152"> 152                if (optlen <8n6p_prot<8a>)
 153                        goto  126<8a>{
 154          if ( 154          ifg(optlen <8n85"> 2058>);
 153                        goto  2058>);
xchg(& 154          o                                    179                        8131"> 1318/a>
sk_" namDONTFRAG    code=IPV6_ADDRFORM" class="sref">IPV68>estruct<8a>)
xchg(&/* 1/a>                                   179                        816p_prot<8) {
 215           8>6"> 126<8>))
 215           8>85"> 2058a>;
 1/ale="La>                    le="La>   ue.c  )179"> 179                        8P95"> 2058lse
 179                        8>val 8 0;
 1/a>                        179"> 179                        8>ROTOOPT<8  }
 179                        8>31"> 1318/a>
 153                        gotcode=IPV6_ADDRFORM" class="sref">IPV681estruct<80);
 1/ale="La>                    le="La>   ue.c  )179"> 179                        8143"> 1438/a>
oINVAs,  215           8>optlen);
 126<8/a>
 193    ass="letline                   lassletline   ue.c me="L193"> 193        net_sk" class="s   ue.c#*ass="line" name=inet_sk" class="sref">re"n193"> 193    leve                leve ef">re"n193"> 193    217ipv6               "L1ipv6    r#L146" id="L146" class="line" name="8>85"> 2058>);
 193    __user" class="sref">__user    #*ass="line" name217a>                "L1a>  hre,aunsigned""n193"> 193    "L152"> 152                )#L146" id="L146" class="line" name="8>95"> 2058/a>
IPPR8ptname 193    err" class="sref">err    ,  179                        8141"> 1418a>:
f=="+code=sk_destruSOL_IPlass="sref">sk_SOL_IP     a>-&ga>-&ge class="line" n=inet_sk" class="sref">net_sk(sk_SOCK_RAW    )#L146" id="L146" class="line" name="8pestruct<8t))
 1udp_pro                udp_pro ue.c.>(&re3"> 193    leve                leve ef">re3"> 193    217ipv6               "L1ipv6    ref="+code=pktopt217a>                "L1a>  hre,a  152                )179"> 179                        8p43"> 1438a>;
 179                        8pptnamef!="+code=sk_destruSOL_IPV6> 152      SOL_IPV6    )#L146" id="L146" class="line" name="8poptlen;
sk_oNOPROTOOPc    ,  126<8a>;
 215           81ef">sk
 1err" class="sref">err       f="+code=pktoptdo_ass="letline                  do_ass="letline   ue.c ass="line" name=inet_sk" class="sref">re3"> 193    leve                leve ef">re3"> 193    217ipv6               "L1ipv6    ref="+code=pktopt217a>                "L1a>  hre,a  152                )179"> 179                    8195"> 2058a>)
sk_CONFIG_NETFILTERue.cine" name="L215"> 215           8       br8ak;
/* we need"to exclude all possible oNOPROTOOPcs except"defaultid="L1*/ 1608/a>
err             sk_oNOPROTOOPc     a>-&ga>-&ge class="line" n217ipv6               "L1ipv6    f!="+code=sk_destru" namIPSEC_POLICYlass="sref">sk_" namIPSEC_POLICY hre a>-&ga>-&g#L143" id="L143" class="line" name="8141"> 1418 ||
sk_" namXFRM_POLICY hreeL"+code=IPPROTO_TCP" class="sref">IPPR8Tsizeof(i8) {
                  l"sra>   ue.c  )179"> 179                        8 e_inval<8>);
 1err" class="sref">err       f="+code=pktoptnf"letline                  nf"letline   ue.c ass="line" name=inet_sk" class="sref">re3"> 193    PF_INET6> 152      PF_INET6ef">re3"> 193    217ipv6               "L1ipv6    ref="+code=pktopt217a>                "L1a>  hre,79"> 179                        8 ptname 152                )179"> 179                    8Toptlen;
   ue.c  )179"> 179                        8 optval 215           8 ef">sk 215           8 95"> 2058a>)
 1err" class="sref">err    ,  215           8 60"> 1608/a>
 179                        8LISHED 1EXPORT_SYMBOs" class="sref">oXPORT_SYMBOsue.c   179                        8Lsizeof(i8a>;
sk_CONFIG_COMPAcue.c#L143" id="L143" class="line" name="8 ptname 193    compat_ass="letline                  compat_ass="letline   ue.c me="L193"> 193        net_sk" class="s   ue.c#*ass="line" name=inet_sk" class="sref">re"n193"> 193    leve                leve ef">re"n193"> 193    217ipv6               "L1ipv6    r#L146" id="L146" class="line" name="8 optlen
 193    __user" class="sref">__user    #*ass="line" name217a>                "L1a>  hre,aunsigned""n193"> 193    "L152"> 152                )#L146" id="L146" class="line" name="8 optvalIPPR8 ef">sk 193    err" class="sref">err    ,  2058a>;
 179                        8       br8ak;
f=="+code=sk_destruSOL_IPlass="sref">sk_SOL_IP     a>-&ga>-&ge class="line" n=inet_sk" class="sref">net_sk(sk_SOCK_RAW    )L"+code=IPPROTO_TCP" class="sref">IPPR8         8  }
(&NULs    )#L146" id="L146" class="line" name="8181"> 1818/a>
 1udp_pro                udp_pro ue.c.>(&re3"> 193    leve                leve ef">re3"> 193    217ipv6               "L1ipv6    r#L146" id="L146" class="line" name="81sizeof(i8>);
  hre,a  152                )179"> 179                    81e_inval<8>);
 1udp_pro                udp_pro ue.c.>(&re3"> 193    leve                leve ef">re3"> 193    217ipv6               "L1ipv6    ref="+code=pktopt217a>                "L1a>  hre,a  152                )179"> 179                    81ptname
 215           8 optlen
f!="+code=sk_destruSOL_IPV6> 152      SOL_IPV6    )#L146" id="L146" class="line" name="8 ef">sk
sk_oNOPROTOOPc    ,  1488an>
 179                        8    */
sk_MCAST_MSFILTER    )#L146" id="L146" class="line" name="8ref">sk);
 1compat_mc_letline                  compat_mc_letline   ue.c ass="line" name=inet_sk" class="sref">re3"> 193    leve                leve ef">re3"> 193    217ipv6               "L1ipv6    ref="+code=pktopt217a>                "L1a>  hre,a  152                r#L146" id="L146" class="line" name="8 81"> 1818/a>
 179                        8TO_TCPsk);
 1err" class="sref">err       f="+code=pktoptdo_ass="letline                  do_ass="letline   ue.c ass="line" name=inet_sk" class="sref">re3"> 193    leve                leve ef">re3"> 193    217ipv6               "L1ipv6    ref="+code=pktopt217a>                "L1a>  hre,a  152                )179"> 179                    8 INET6sk_CONFIG_NETFILTERue.cine" name="L215"> 215           8rot, 81);
/* we need"to exclude all possible oNOPROTOOPcs except"defaultid="L1*/err             sk_oNOPROTOOPc     a>-&ga>-&ge class="line" n217ipv6               "L1ipv6    f!="+code=sk_destru" namIPSEC_POLICYlass="sref">sk_" namIPSEC_POLICY hre a>-&ga>-&g#L143" id="L143" class="line" name="8Tef">sksk_" namXFRM_POLICY hreeL"+code=IPPROTO_TCP" class="sref">IPPR8T48"> 1488a>;
                  l"sra>   ue.c  )179"> 179                        9specific<9a>;
 1err" class="sref">err       f="+code=pktoptcompat_nf"letline                  compat_nf"letline   ue.c ass="line" name=inet_sk" class="sref">re3"> 193    PF_INET6> 152      PF_INET6ef">re3"> 193    217ipv6               "L1ipv6    r79"> 179                        9s1ecific<9a);
                "L1a>  hre,a  152                )179"> 179                    9s2am_ops<9aa>
   ue.c  )179"> 179                        9_cookie);
 215           9     } el9e {
 215           9udp_prot<9a>;
 1err" class="sref">err    ,  215           9 7p_prot<9a);
 215           9_8p_prot<9a);
 1EXPORT_SYMBOs" class="sref">oXPORT_SYMBOsue.c   179                        9_9p_prot<9a>;
 215           9rot, 91);
 215           9r1ecific<91);
 193    15 152      15 193        net_sk" class="s   ue.c#*ass="line" name=inet_sk" class="sref">reme="L193"> 193    15n15 152             r79"> 179                        9enable 193    217ipv6               "L1ipv6    r"dhar93"> 193    __user" class="sref">__user    #*ass="line" name217a>                "L1a>  hre,a"n193"> 193    le"> 152             )#L146" id="L146" class="line" name="9ecookie;
IPPR9e    } el9a>;
 193    1515hdr    179"> 179                        9rdp_prot<9a>;
 215           9p6p_prot<9  }
 1217> 152             )#L146" id="L146" class="line" name="9e7p_prot<9>);
 2059a>)
IPV69g95"> 2059>);
IPPR9f">NULL);
sk_" namHOPOPcSue.ccode=IPV6_ADDRFORM" class="sref">IPV69frot,9>);
hdr       f="+code=pktopt217> 152             net_sk( 179                        9221"> 2219/a>
 179                        9destruct<9a>;
sk_" namRTHDRDSTOPcSue.ccode=IPV6_ADDRFORM" class="sref">IPV69f    } el9an>
 1hdr" class="sref">hdr       f="+code=pktopt217> 152             net_sk( 179                        92dp_prot<9n5|="co9id="L128" class996_soc92lue.c#L185" id="L185"me="L179"> 179                        9d6p_prot<9a>)
sk_" namRTHDRue.ccode=IPV6_ADDRFORM" class="sref">IPV69f7p_prot<9a>{
 1hdr" class="sref">hdr        me="L193"> 193    1515 179                        9285"> 2059>);
 179                        9d95"> 2059>);
sk_" namDSTOPcSue.ccode=IPV6_ADDRFORM" class="sref">IPV69>valbool<9a>;
hdr       f="+code=pktopt217> 152             net_sk( 179                        9PROTOOPT<9a>;
 179                        9131"> 1319/a>
IPV69>estruct<9a>)
oINVAs,iaspan
/* should not happen1*//* 215           9Pdp_prot<9e {
 215           916p_prot<9) {
 1hdr" class="sref">hdr    )#L146" id="L146" class="line" name="9>6"> 126<9>))
 2059a>;
IPV69P95"> 2059lse
 193    le"> 152                f="+code=pktoptmin_                min_ ue.c unsigned""n1re3"> 193    le"> 152             re3"> 193    15 152      15hdr    ))179"> 179                        9>val 9 0;
copy_to_userue.c    hre,a hdr    re3"> 193    le"> 152             de=optlen" class="sref">optlen <9>ROTOOPT<9  }
sk_oFAULc    179"> 179                        9>31"> 1319/a>
 1le"> 152             179"> 179                        9>estruct<90);
 215           9143"> 1439/a>
 179                        9optname))
 193    do_ass="getline                  do_ass="getline   ue.c me="L193"> 193        net_sk" class="s   ue.c#*ass="line" name=inet_sk" class="sref">re"n193"> 193    leve                leve ef">re"n193"> 193    217ipv6               "L1ipv6    r#L146" id="L146" class="line" name="9>optlen);
 193    __user" class="sref">__user    #*ass="line" name217a>                "L1a>  hre,a"n193"> 193    __user" class="sref">__user    #*ass="line" name21752"> 152                raunsigned""n193"> 193    flag" class="sref">nflag"    )#L146" id="L146" class="line" name="9>6"> 126<9/a>
IPPR9>85"> 2059>);
 193    15 152      15xc   f="+code=pktopt"netss=inet_sk" class=""netss=iue.c  )179"> 179                        9>95"> 2059/a>
 193    le"> 152             179"> 179                        9ptname 193    ="+54"> 154          o  179                        9141"> 1419a>:
 1 l6_mroute_getline                   l6_mroute_getline   ue.c ass="line" name=inet_sk" class="sref">re3"> 193    217ipv6               "L1ipv6    ref="+code=pktopt217a>                "L1a>  hre,a  152                )179"> 179                    9p43"> 1439a>;
 179                        9pptnameget_userue.c ass="line" namele"> 152             re3"> 193    "L152"> 152                ))#L146" id="L146" class="line" name="9poptlen;
sk_oFAULc    179"> 179                        9p6"> 126<9a>;
IPPR91ef">sk
sk_" namADDRFORMue.ccode=IPV6_ADDRFORM" class="sref">IPV69195"> 2059a>)
net_sk(sk_" PROTO_UDPue.c#a>-&ga>-&g#L143" id="L143" class="line" name="9       br9ak;
net_sk(sk_" PROTO_UDPLITEue.c#a>-&ga>-&g#L143" id="L143" class="line" name="9 /a>     9/a>
net_sk(sk_" PROTO_TCP    )#L146" id="L146" class="line" name="9141"> 1419 ||
sk_oNOPROTOOPc    , net_sk( 1439>);
sk_oNOTCONN    ,  193    ="+54"> 154             f="+code=pktopt=inet_sk" class="sref">net_sk( 179                        9 optvalsk_MCAST_MSFILTER    code=IPV6_ADDRFORM" class="sref">IPV69 ef">skIPPR9 95"> 2059a>)
 193    group_filter" class="sref">group_filterue.c#3"> 193    gssket_sk" class="gss    ,  193    err" class="sref">err    ,  1609/a>
 179                        9LISHED 152              f (sk_GROUP_FILTER_SIZEue.c 0))#L146" id="L146" class="line" name="9Lsizeof(i9a>;
oINVAs, copy_from_userue.c a>-&g3"> 193    gssket_sk" class="gss    ref="+code=pktopt217a>                "L1a>  hre,a sk_GROUP_FILTER_SIZEue.c 0)))#L146" id="L146" class="line" name="9Lptnamesk_oFAULc    179"> 179                        9 optlen
 152      AF_INET6ef">)#L146" id="L146" class="line" name="9LoptvaloADDRNOTAVAIs    179"> 179                        9 ef">sk                  l"sra>   ue.c  )179"> 179                        9 95"> 2059a>;
err       f="+code=pktopt l6_mc_msfge                 l6_mc_msfge ue.c ass="line" name=inet_sk" class="sref">rea>-&g3"> 193    gssket_sk" class="gss    r79"> 179                        9       br9ak;
 193    group_filter" class="sref">group_filterue.c#3"> 193    __user" class="sref">__user    #*)f="+code=pktopt217a>                "L1a>  hre,a  152                )179"> 179                    9         9  }
                    le="La>   ue.c  )179"> 179                        9181"> 1819/a>
 1err" class="sref">err    ,  215           91e_inval<9>);
 179                        91ptname
sk_" nam2292PKTOPcIONS    code=IPV6_ADDRFORM" class="sref">IPV69 optlen
IPPR9 optval
 193    msghdr" class="sref">msghdrue.c#3"> 193    msg" class="sref">msg    , sk
 193     k_bufsket_sk" class=" k_bufsue.c#*ass="line" name=ibket_sk" class=" kb    ,  2059an>
 179                        9    */
net_sk(sk_SOCK_STREAMef">)#L146" id="L146" class="line" name="9ref">sk);
sk_oNOPROTOOPc    ,  1819/a>
msg    .>(&  hre,  1msg" class="sref">msg    .>(& 152      msg_contro 52"       f="+code=pktoptle"> 152             179"> 179                        9 INET6 193    msg" class="sref">msg    .>(&nmsg_flag"       f="+code=pktoptflag" class="sref">nflag"    179"> 179                        9 optlen 1l"sra>                  l"sra>   ue.c  )179"> 179                        9Tef">sk 1=ibket_sk" class=" kb       f="+code=pktoptn=xchg" class="sref">xchg(&npkt   ion"    179"> 179                        9 95"> 2059a>;
10spue.c#L211" id="L211"d="L222"ss="line" name=atomic_incket_sk" class="atomic_incue.c a>-&g3"> 193    =ibket_sk" class=" kb    hg(&nuser"ef">)179/pre>L146" id="L146" class="line" name="10s1ecific<10s);
                    le="La>   ue.c  )179"> 179                        10s2ecific<10sa>
10slue.c#L203" id="L220" class="line" name==ibket_sk" class=" kb    )i"+code=IPPROTO_TCP" class="sref">IPPR10s4ecific<10s);
 193    err" class="sref">err       f="+code=pktoptdatagram_recv_ct                datagram_recv_ct ue.c ass="line" name=inet_sk" class="sref">rea>-&g3"> 193    msg" class="sref">msg    ,a  179                        10s5ecific<10s);
 179                        10s6ecific<10s);
err    )#L146" id="L146" class="line" name="10s7ecific<10s);
 1err" class="sref">err    , 10slue.c#L218" id="L217"} elsei"+code=IPPROTO_TCP" class="sref">IPPR10s9ecific<10s>;
xchg(&(&nbit"    .>(& 152      rxinfo    )i"+code=IPPROTO_TCP" class="sref">IPPR101pecific<101);
 193    1n6_pktinfo> 152      1n6_pktinfoue.c#3"> 193    src_info> 152      src_info    , 101lue.c#L201" id="L201"194"""""" id="L23"> 193    src_info> 152      src_info    .>(&xchg(&xchg(&IPV61012ecific<10();
 193    n=xchg" class="sref">xchg(& 152      sticky_pktinfo    .>(&;>101lue.c#L153" id="L153"d="L203"""""""""3"> 193    src_info> 152      src_info    .>(&15i6_addr       f="+code=pktoptn=xchg" class="sref">xchg(&xchg(&daddr     :23"> 193    n=xchg" class="sref">xchg(& 152      sticky_pktinfo    .>(&15i6_addr    , ;>101lue.c#L214" id="L214"d="L220"""""""""3"> 193    put_cmsg" class="sref">put_cmsgue.c a>-&g3"> 193    msg" class="sref">msg    ,a sk_" namPKTINFO    ,asizeof ass="line" name=rc_info> 152      src_info    )rea>-&g3"> 193    =rc_info> 152      src_info    ), ;>101lue.c#L165" id="L165"d="L222"line" name="L215"> 215           1016ecific<10  }
xchg(&(&nbit"    .>(&IPPR1017ecific<10>);
 193    hlim               hlim       f="+code=pktoptn=xchg" class="sref">xchg(&nmcast_hop"    , )>101lue.c#L218" id="L217"d="L220"""""""""3"> 193    put_cmsg" class="sref">put_cmsgue.c a>-&g3"> 193    msg" class="sref">msg    ,a sk_" namHOPLIMIc    ,asizeof ass="line" namehlim               hlim    )rea>-&g3"> 193    hlim               hlim    ), );>101lue.c#L209" id="L209"""""""""line" name="L215"> 215           102pecific<10>);
xchg(&(&nbit"    .>(&IPPR1021ecific<10>);
 193    tlass=               tlass=       f="+code=pktoptn=xchg" class="sref">xchg(&>10>lue.c#L202" id="L202"""""""""""""""""3"> 193    put_cmsg" class="sref">put_cmsgue.c a>-&g3"> 193    msg" class="sref">msg    ,a sk_" namTCLASS    ,asizeof ass="line" nametlass=               tlass=    )rea>-&g3"> 193    tlass=               tlass=    ), ;>10>lue.c#L153" id="L153"d="L203"line" name="L215"> 215           1024ecific<10an>
xchg(&(&nbit"    .>(& 152      rxoinfo    )i"+code=IPPROTO_TCP" class="sref">IPPR1025ecific<10n5|="co9id="L128" class910n5|>10>lue.c#L165" id="L165"d="L222"d="L220"me="L193"> 193    1n6_pktinfo> 152      1n6_pktinfoue.c#3"> 193    src_info> 152      src_info    , )>10>lue.c#L116" id="L116"""""""""""""""""3"> 193    src_info> 152      src_info    .>(&xchg(&xchg(&IPV61027ecific<10a>{
 193    n=xchg" class="sref">xchg(& 152      sticky_pktinfo    .>(&);>10>lue.c#L218" id="L217"d="L220"""""""""3"> 193    src_info> 152      src_info    .>(&15i6_addr       f="+code=pktoptn=xchg" class="sref">xchg(&xchg(&daddr     :23"> 193    n=xchg" class="sref">xchg(& 152      sticky_pktinfo    .>(&15i6_addr    , );>10>lue.c#L209" id="L209"""""""""""""""""3"> 193    put_cmsg" class="sref">put_cmsgue.c a>-&g3"> 193    msg" class="sref">msg    ,a sk_" nam2292PKTINFO    ,asizeof ass="line" name=rc_info> 152      src_info    )rea>-&g3"> 193    =rc_info> 152      src_info    ), ;>10a>ue.c#L153" id="L153"d="L203"line" name="L215"> 215           1031ecific<10a>;
xchg(&(&nbit"    .>(&IPPR1032ecific<10/a>
 193    hlim               hlim       f="+code=pktoptn=xchg" class="sref">xchg(&nmcast_hop"    , )>10alue.c#L153" id="L153"d="L203"""""""""3"> 193    put_cmsg" class="sref">put_cmsgue.c a>-&g3"> 193    msg" class="sref">msg    ,a sk_" nam2292HOPLIMIc    ,asizeof ass="line" namehlim               hlim    )rea>-&g3"> 193    hlim               hlim    ), 10alue.c#L214" id="L214"d="L220"line" name="L215"> 215           1035ecific<10e {
 215           1036ecific<10) {
 193    le"> 152              -  f="+code=pktoptmsg" class="sref">msg    .>(& 152      msg_contro 52"    , ))>10alue.c#L217" id="L217"   urn"3"> 193    put_user" class="sref">put_userue.c 3"> 193    le"> 152             ,a  152                )179"> 179                    10a8ecific<10a>;
 215           1039ecific<10lse
sk_" namMTUue.ccode=IPV6_ADDRFORM" class="sref">IPV6104pecific<10 0;
IPPR1041ecific<10  }
 193    dst_entry> 152      dst_entryue.c#*ass="line" namedst> 152      dst    , >10 lue.c 10 lue.c#L203" id="L220"=ss="line" name="+54"> 154                    >10 lue.c#L214" id="L214" name="L153"> 1rcu_read_l                   cu_read_l   ue.c )179"> 179                    1045ecific<10>))
 193    dst> 152      dst       f="+code=pktopt__sk_dst_ge                __sk_dst_ge ue.c 3"> 193    =inet_sk" class="sref">)179"> 179                        1046ecific<10>);
 152      dst    )#L146" id="L146" class="line" name="1047ecific<10/a>
 154             3"> 193    dst_mtu> 152      dst_mtuue.c 3"> 193    dst> 152      dst    )179"> 179                        1048ecific<10>);
 1 cu_read_unl                   cu_read_unl   ue.c )179"> 179                    1049ecific<10/a>
 1="+54"> 154          )#L146" id="L146" class="line" name="105pecific<10) {
sk_oNOTCONN    , >10)lue.c#L201" id="L201"me="L179"> 179                        10)2ecific<10a>:
 215           1053ecific<10t))
;>10)4ue.c#L179" id="L151" class="line" namV6ONLYlass="sref">sk_" namV6ONLYue.ccode=IPV6_ADDRFORM" class="sref">IPV61055ecific<10) {
 193    ="+54"> 154             f="+code=pktoptn=xchg" class="sref">xchg(& 152      clasonly    , ;>10)lue.c#L216" id="L216"me="L179"> 179                        10)7ecific<10a>;
 215           10)8ecific<10/a>
sk_" namRECVPKTINFOue.ccode=IPV6_ADDRFORM" class="sref">IPV61059ecific<10a>)
 154             f="+code=pktoptn=xchg" class="sref">xchg(&(&nbit"    .>(& 152      rxinfo    179"> 179                        106pecific<10ak;
 179                        1061ecific<10/a>
 179                        10a2ecific<10 ||
sk_" nam2292PKTINFO    code=IPV6_ADDRFORM" class="sref">IPV61063ecific<10) {
 154             f="+code=pktoptn=xchg" class="sref">xchg(&(&nbit"    .>(& 152      rxoinfo    179"> 179                        1064ecific<10>);
 179                        1065ecific<10) {
 215           10a6ecific<10a>;
sk_" namRECVHOPLIMIc    code=IPV6_ADDRFORM" class="sref">IPV61067ecific<10ak;
 1="+54"> 154             f="+code=pktoptn=xchg" class="sref">xchg(&(&nbit"    .>(& 179                        1068ecific<10  }
 179                        10a9ecific<10a>)
 179                        107pecific<10ak;
sk_" nam2292HOPLIMIc    code=IPV6_ADDRFORM" class="sref">IPV61071ecific<10/a>
 154             f="+code=pktoptn=xchg" class="sref">xchg(&(&nbit"    .>(& 179                        1072ecific<10) {
 179                        10a3ecific<10a>;
10a4ue.c#L179" id="L151" class="line" namRECVRTHDRlass="sref">sk_" namRECVRTHDR    code=IPV6_ADDRFORM" class="sref">IPV61075ecific<10  }
 193    ="+54"> 154             f="+code=pktoptn=xchg" class="sref">xchg(&(&nbit"    .>(& 179                        10a6ecific<10/a>
 179                        1077ecific<10 ||
 215           1078ecific<10) {
sk_" nam2292RTHDR    code=IPV6_ADDRFORM" class="sref">IPV61079ecific<10a>;
 154             f="+code=pktoptn=xchg" class="sref">xchg(&(&nbit"    .>(& 179                        108pecific<10ak;
 179                        1081ecific<10  }
 179                        1082ecific<10/a>
sk_" namHOPOPcSue.ccode=IPV6_ADDRFORM" class="sref">IPV610a3ecific<10>);
sk_" namRTHDRDSTOPcSue.ccode=IPV6_ADDRFORM" class="sref">IPV610a4ecific<10>);
sk_" namRTHDRue.ccode=IPV6_ADDRFORM" class="sref">IPV610a5ecific<10/a>
sk_" namDSTOPcSue.ccode=IPV6_ADDRFORM" class="sref">IPV610a6ecific<10an>
IPPR10a7ecific<10an>
 215           1088ecific<10an>
                  l"sra>   ue.c  )179"> 179                        10a9ecific<10an>
 152                f="+code=pktopt     getline   _sticky> 152      clas getline   _stickyue.c  ,a xchg(& 152             r79"> 179                        109pecific<10an>
(& 152         ipv6    ,a                 "L1a>  hre,a  152             d179"> 179                        1091ecific<10>);
                    le="La>   ue.c  )179"> 179                        1092ecific<10/a>
/* check""clclas getline   _sticky()"   urns err +cod1*/10alue.c#L203" id="L220" class="line" name=le"> 152              f ();>10alue.c#L214" id="L214"d="L220"   urn"ss="line" name=le"> 152             179"> 179                        1095ecific<10();
 193    put_user" class="sref">put_userue.c 3"> 193    le"> 152             ,a  152                )179"> 179                    1096ecific<101);
 215           1097ecific<101);
 215           1098ecific<10();
sk_" namRECVHOPOPcSue.ccode=IPV6_ADDRFORM" class="sref">IPV61099ecific<10a>;
 154             f="+code=pktoptn=xchg" class="sref">xchg(&(&nbit"    .>(&nhop   "    179"> 179                        11specific<11spec 179                        11s1ecific<11s);
 179                        11s2ecific<11sa>
sk_" nam2292HOPOPcSue.ccode=IPV6_ADDRFORM" class="sref">IPV611s3ecific<11s {
 154             f="+code=pktoptn=xchg" class="sref">xchg(&(&nbit"    .>(&nohop   "    179"> 179                        11s4ecific<11s);
 179                        11s5ecific<11s);
 215           11s6ecific<11s);
sk_" namRECVDSTOPcSue.ccode=IPV6_ADDRFORM" class="sref">IPV611s7ecific<11s);
 154             f="+code=pktoptn=xchg" class="sref">xchg(&(&nbit"    .>(&ndst   "    179"> 179                        11s8ecific<11s);
 179                        11s9ecific<11s>;
 179                        111pecific<111);
sk_" nam2292DSTOPcSue.ccode=IPV6_ADDRFORM" class="sref">IPV61111ecific<111);
 154             f="+code=pktoptn=xchg" class="sref">xchg(&(&nbit"    .>(&nodst   "    179"> 179                        1112ecific<11();
 179                        1113ecific<11a>;
;>1114ue.c#L179" id="L151" class="line" namTCLASSlass="sref">sk_" namTCLASS    code=IPV6_ADDRFORM" class="sref">IPV61115ecific<11a>;
 154             f="+code=pktoptn=xchg" class="sref">xchg(& 179                        1116ecific<11  }
 179                        1117ecific<11>);
 215           1118ecific<11a>)
sk_" namRECVTCLASS    code=IPV6_ADDRFORM" class="sref">IPV61119ecific<11>);
 154             f="+code=pktoptn=xchg" class="sref">xchg(&(&nbit"    .>(& 179                        112pecific<11>);
 179                        1121ecific<11>);
 179                        1122ecific<11/a>
sk_" namFLOWINFO    code=IPV6_ADDRFORM" class="sref">IPV61123ecific<11a>;
 154             f="+code=pktoptn=xchg" class="sref">xchg(&(&nbit"    .>(& 179                        1124ecific<11an>
 179                        1125ecific<11n5|="co9id="L128" class911n5|>112lue.cine" name="L215"> 215           1126ecific<11a>)
sk_" namRECVPATHMTU    code=IPV6_ADDRFORM" class="sref">IPV61127ecific<11a>{
 154             f="+code=pktoptn=xchg" class="sref">xchg(&(&nbit"    .>(& 152      rxpmtu    179"> 179                        1128ecific<11>);
 179                        1129ecific<11>);
 179                        113pecific<11a>;
sk_" namPATHMTU    code=IPV6_ADDRFORM" class="sref">IPV61131ecific<11a>;
IPPR1132ecific<11/a>
 193    dst_entry> 152      dst_entryue.c#*ass="line" namedst> 152      dst    , )>11alue.c#L153" id="L153"me="L193"> 193    1l6_mtuinfo> 152      1l6_mtuinfoue.c#3"> 193    mtuinfo> 152      mtuinfoue.c, 113lue.c79"> 179                        1135ecific<11e {
 152              f ( 152      mtuinfoue.c))#L146" id="L146" class="line" name="11a6ecific<11) {
oINVAs, ))>113lue.cine" name="L215"> 215           11a8ecific<11a>;
 152                sizeof ass="line" namemtuinfo> 152      mtuinfoue.c), 113lue.c#L209" id="L209"=ss="line" namememse                memse ue.c a>-&g3"> 193    mtuinfo> 152      mtuinfoue.c, 0,asizeof ass="line" namemtuinfo> 152      mtuinfoue.c)), 11 0ue.c 11 lue.c#L201" id="L201">(& 179                    1142ecific<11/a>
 152      dst       f="+code=pktopt__sk_dst_ge                __sk_dst_ge ue.c 3"> 193    =inet_sk" class="sref">)179"> 179                        1143ecific<110);
 152      dst    )#L146" id="L146" class="line" name="11 4ecific<11/a>
 152      mtuinfoue.c.>(& 152      ip6m_mtu       f="+code=pktoptdst_mtu> 152      dst_mtuue.c 3"> 193    dst> 152      dst    )179"> 179                        1145ecific<11>))
 193     cu_read_unl                   cu_read_unl   ue.c )179"> 179                    1146ecific<11>);
 1mtuinfo> 152      mtuinfoue.c.>(& 152      ip6m_mtu    )#L146" id="L146" class="line" name="11 7ecific<11/a>
sk_oNOTCONN    , );>11 lue.c >11 lue.c#L209" id="L209""cla    put_userue.c 3"> 193    le"> 152             ,a  152                ))#L146" id="L146" class="line" name="115pecific<11) {
sk_oFAULc    , >11)lue.c#L201" id="L201""cla    copy_to_userue.c 3"> 193    "L1a>                "L1a>  hre,aa>-&g3"> 193    mtuinfo> 152      mtuinfoue.c, 3"> 193    le"> 152             ))#L146" id="L146" class="line" name="1152ecific<11a>:
sk_oFAULc    , 11)lue.c#L143" id="L143" class="line" name="11)4ecific<11a>;
11)lue.c#L165" id="L165"me="L179"> 179                        11)6ecific<11a>;
 215           11)7ecific<11a>;
 215           11)8ecific<11/a>
sk_" namTRANSPARENc    code=IPV6_ADDRFORM" class="sref">IPV61159ecific<11a>)
 154             f="+code=pktopt"net_=inet_sk" class=""net_=iue.c 3"> 193    =inet_sk" class="sref">)hg(&11akue.c#L216" id="L216"me="L179"> 179                        1161ecific<11/a>
 179                        11a2ecific<11 ||
sk_" namRECVORIGDSTADDR    code=IPV6_ADDRFORM" class="sref">IPV61163ecific<11) {
 154             f="+code=pktoptn=xchg" class="sref">xchg(&(&nbit"    .>(&rxorigdstaddr    , );>11alue.c#L214" id="L214"me="L179"> 179                        1165ecific<11) {
 215           11a6ecific<11a>;
sk_" namUNICASTmHOPS    code=IPV6_ADDRFORM" class="sref">IPV61167ecific<11ak;
sk_" namMULcICASTmHOPS    code=IPV6_ADDRFORM" class="sref">IPV61168ecific<11  }
IPPR11a9ecific<11a>)
 193    dst_entry> 152      dst_entryue.c#*ass="line" namedst> 152      dst    , 1170ue.c >11alue.c#L211" id="L211""cla    sk_" namUNICASTmHOPS    )#L146" id="L146" class="line" name="1172ecific<11) {
 154             f="+code=pktoptn=xchg" class="sref">xchg(& 152      hop_limit    , ;>117lue.c#L203" id="L220"else 117lue.c#L214" id="L214"d="L209"=ss="line" name="+54"> 154             f="+code=pktoptn=xchg" class="sref">xchg(&nmcast_hop"    , 117lue.cine" name="L215"> 215           11a6ecific<11/a>
 154           f (IPPR1177ecific<11 ||
 179                    1178ecific<11) {
 152      dst       f="+code=pktopt__sk_dst_ge                __sk_dst_ge ue.c 3"> 193    =inet_sk" class="sref">)179"> 179                        1179ecific<11a>;
11akue.c#L216" id="L216"d="L214"d="L209"=ss="line" name="+54"> 154             f="+code=pktopt1l6_dst_hoplimit> 152      1l6_dst_hoplimitue.c 3"> 193    dst> 152      dst    )179"> 179                        1181ecific<11  }
 193     cu_read_unl                   cu_read_unl   ue.c )179"> 179                    1182ecific<11/a>
 215           11a3ecific<11>);
);>118lue.c#L214" id="L214""cla     154           f (>118lue.c#L165" id="L165"d="L209"=ss="line" name="+54"> 154             f="+code=pktoptline_ne                line_ne ue.c 3"> 193    =inet_sk" class="sref">)hg(& 152      1lv6    .>(& 154   devconf_al+">xchg(& 152      hop_limit    , >118lue.c#L116" id="L116"me="L179"> 179                        11a7ecific<11an>
 215           11a8ecific<11an>
>118lue.c#L179" id="L151" class="line" namMULcICASTmLOOPlass="sref">sk_" namMULcICASTmLOOP    code=IPV6_ADDRFORM" class="sref">IPV6119pecific<11an>
 154             f="+code=pktoptn=xchg" class="sref">xchg(&);>11alue.c#L211" id="L211"me="L179"> 179                        1192ecific<11/a>
11alue.c#L203" id="L151" class="line" namMULcICASTmIFlass="sref">sk_" namMULcICASTmIF    code=IPV6_ADDRFORM" class="sref">IPV61194ecific<11>);
 154             f="+code=pktoptn=xchg" class="sref">xchg(& 179                        1195ecific<11();
 179                        1196ecific<111);
 179                        1197ecific<111);
sk_" namUNICASTmIF    code=IPV6_ADDRFORM" class="sref">IPV61198ecific<11();
 154              3"> 193    __forc6> 152      __forc6     int)>(& 154   hton+ue.c  3"> 193    __u/a>
xchg(& 179                    1199ecific<11a>;
 179                        12specific<12spec1201ue.c#L203" id="L151" class="line" namMTU_DISCOVERlass="sref">sk_" namMTU_DISCOVER    code=IPV6_ADDRFORM" class="sref">IPV612s2ecific<12sa>
 154             f="+code=pktoptn=xchg" class="sref">xchg(&pmtudisc    179"> 179                        12s3ecific<12s {
 179                        12s4ecific<12s);
 179                        12s5ecific<12s);
sk_" namRECVERR    code=IPV6_ADDRFORM" class="sref">IPV612s6ecific<12s);
 193    ="+54"> 154             f="+code=pktoptn=xchg" class="sref">xchg(&recverr    179"> 179                        12s7ecific<12s);
 179                        12s8ecific<12s);
;>120lue.c#L179" id="L151" class="line" namFLOWINFO_SENDlass="sref">sk_" namFLOWINFO_SEND    code=IPV6_ADDRFORM" class="sref">IPV6121pecific<121);
 154             f="+code=pktoptn=xchg" class="sref">xchg(& 179                        1211ecific<121);
 179                        1212ecific<12();
;>121lue.c#L203" id="L151" class="line" namADDR_PREFERENCESlass="sref">sk_" namADDR_PREFERENCES    code=IPV6_ADDRFORM" class="sref">IPV61214ecific<12a>;
 154                    ;>121lue.cine" name="L215"> 215           1216ecific<12  }
xchg(&nsrcpmp;"     f>-&g151" class="line" namPREFER_SRC_TMPlass="sref">sk_" namPREFER_SRC_TMP    )#L146" id="L146" class="line" name="1217ecific<12>);
 154           |  f="+code=pktopt" namPREFER_SRC_TMPlass="sref">sk_" namPREFER_SRC_TMP          )>121lue.c#L218" id="L218"else""class="line" name=n=xchg" class="sref">xchg(&nsrcpmp;"     f>-&g151" class="line" namPREFER_SRC_PUBLIClass="sref">sk_" namPREFER_SRC_PUBLIC    )#L146" id="L146" class="line" name="1219ecific<12>);
 154           |  f="+code=pktopt" namPREFER_SRC_PUBLIClass="sref">sk_" namPREFER_SRC_PUBLIC          );>12>)ue.c#L116" id="L116"else""+code=IPPROTO_TCP" class="sref">IPPR1221ecific<12>);
/* XXX: should we"   urn"system default?1*/>122lue.c#L202" id="L202"d="L220"=ss="line" name="+54"> 154           |  f="+code=pktopt" namPREFER_SRC_PUBTMP_DoFAULclass="sref">sk_" namPREFER_SRC_PUBTMP_DoFAULc          ;>12>lue.c#L153" id="L153"line" name="L215"> 215           1224ecific<12an>
 179                        1225ecific<12n5|="co9id="L128" class912n5|>122lue.c#L165" id="L165" class="line" name=n=xchg" class="sref">xchg(&nsrcpmp;"     f>-&g151" class="line" namPREFER_SRC_COAlass="sref">sk_" namPREFER_SRC_COA    )#L146" id="L146" class="line" name="1226ecific<12a>)
 154           |  f="+code=pktopt" namPREFER_SRC_COAlass="sref">sk_" namPREFER_SRC_COA          {>12>lue.c#L167" id="L167"else );>12>lue.c#L218" id="L217"""""""""=ss="line" name="+54"> 154           |  f="+code=pktopt" namPREFER_SRC_HOMElass="sref">sk_" namPREFER_SRC_HOME          );>122lue.c#L209" id="L209"me="L179"> 179                        123pecific<12a>;
;>1231ue.c#L203" id="L151" class="line" namMINHOPCOUNclass="sref">sk_" namMINHOPCOUNc    code=IPV6_ADDRFORM" class="sref">IPV61232ecific<12/a>
 154             f="+code=pktoptn=xchg" class="sref">xchg(&)>12alue.c#L153" id="L153"me="L179"> 179                        1234ecific<12=0;
 179                        1235ecific<12e {
sk_" namDONTFRAG    code=IPV6_ADDRFORM" class="sref">IPV61236ecific<12) {
 154             f="+code=pktoptn=xchg" class="sref">xchg(& 154   dontfrag          ))>123lue.c#L167" id="L167"me="L179"> 179                        12a8ecific<12a>;
123lue.c#L209" idefaultcode=IPV6_ADDRFORM" class="sref">IPV6124pecific<12 0;
sk_oNOPROTOOPc          12 lue.c#L201" iline" name="L215"> 215           1242ecific<12/a>
 152                f="+code=pktoptmin_t"              min_ ue.c unsigned int,asizeof int),a  152             d179"> 179                        1243ecific<120);
put_userue.c 3"> 193    le"> 152             ,a  152                ))#L146" id="L146" class="line" name="12 4ecific<12/a>
sk_oFAULc    , ))>12 lue.c#L165" iif ass="line" namecopy_to_user" class="sref">copy_to_userue.c 3"> 193    "L1a>                "L1a>  hre,a>-&g3"> 193    ="+54"> 154          ,  152             d)#L146" id="L146" class="line" name="12 6ecific<12>);
sk_oFAULc    , >12 lue.c#L167" i   urn"       );>12 lue.cline" name="L215"> 215           1249ecific<12/a>
 179                        125pecific<12) {
sk_     getline   ue.c me="L193"> 193    s                  s   ue.c#*ass="line" name=inet_sk" class="sref">,aint f="+code=pktoptleve+54"> 154   leve+ef">,aint f="+code=pktopt217ipv6> 152         ipv6    ,79"> 179                        1251ecific<12/a>
__userue.c#*ass="line" name"L1a>                "L1a>  hre,aint f="+code=pktopt__user" class="sref">__userue.c#*ass="line" name"L152"> 152                )79"> 179                        1252ecific<12a>:
IPPR12)3ecific<12t))
err    179"> 179                        12)4ecific<12a>;
 179                        1255ecific<12) {
 154   leve+ef"> =  f="+code=pktoptSOL_IPlass="sref">sk_SOL_IP     f>-&gf>-&g151" class="line=inet_sk" class="sref">hg(& 152      sk_typ6     !  f="+code=pktoptSOCK_RAWlass="sref">sk_SOCK_RAW    )79"> 179                        1256ecific<12a>;
(&sk_udp_pro ue.c.>(&sk_getline   ue.c ass="line" name=inet_sk" class="sref">,af="+code=pktoptleve+54"> 154   leve+ef">,af="+code=pktopt217ipv6> 152         ipv6    ,a                 "L1a>  hre,a  152                )179"> 179                    12)7ecific<12a>;
 215           12)8ecific<12/a>
 154   leve+ef"> !  f="+code=pktoptSOL_IPV=> 152      SOL_IPV=    )79"> 179                        1259ecific<12a>)
sk_oNOPROTOOPc          1260ue.c >126lue.c#L201" if="+code=pktopterr" class="sref">err       f="+code=pktoptdo_     getline   lass="sref">sk_do_     getline   ue.c ass="line" name=inet_sk" class="sref">,af="+code=pktoptleve+54"> 154   leve+ef">,af="+code=pktopt217ipv6> 152         ipv6    ,a                 "L1a>  hre,a  152                , 0)179"> 179                    12a2ecific<12 ||
sk_CONFIG_NETFILTERue.c 12alue.c#L203" i3span
/* we need to exclude all possible oNOPROTOOPcs exceptidefaultid="L1*/);>12alue.c#L214" iiflass="line" name=err" class="sref">err      ="     sk_oNOPROTOOPc     f>-&gf>-&g151" class="line217ipv6> 152         ipv6     !  f="+code=pktopt" nam2292PKTOPcIONSlass="sref">sk_" nam2292PKTOPcIONS    )""+code=IPPROTO_TCP" class="sref">IPPR1265ecific<12) {
 152             179"> 179                        12a6ecific<12a>;
 179                        1267ecific<12ak;
get_userue.c 3"> 193    le"> 152             ,a  152                ))#L146" id="L146" class="line" name="1268ecific<12  }
sk_oFAULc    , )>126lue.c79"> 179                        127pecific<12ak;
                  l"sra>   ue.c  )179"> 179                        1271ecific<12/a>
err       f="+code=pktoptnf getline   lass="sref">sk_nf getline   ue.c ass="line" name=inet_sk" class="sref">,af="+code=pktoptPF_INET=> 152      PF_INET=ef">,af="+code=pktopt217ipv6> 152         ipv6    ,a                 "L1a>  hre,79"> 179                        1272ecific<12) {
-&g3"> 193    le"> 152             d179"> 179                        1273ecific<12a>;
 193    /ale="La>                    le="La>   ue.c  )179"> 179                        1274ecific<12ak;
err     g127lue.c#L165" id="L165"d="L209"=ss="line" nameerr" class="sref">err       f="+code=pktoptput_user" class="sref">put_userue.c 3"> 193    le"> 152             ,a  152                )179"> 179                    12a6ecific<12/a>
 215           1277ecific<12 ||
 215           1278ecific<12) {
(&err    179"> 179                        1279ecific<12a>;
 215           128pecific<12ak;
128lue.c    oXPORT_SYMBOsue.c 3"> 193         getline   lass="sref">sk_     getline   ue.c)179"> 179                    1282ecific<12/a>
);>128lue.c#ifdefa sk_CONFIG_COMPAcue.c );>128lue.c nt f="+code=pktoptcompat_     getline   lass="sref">sk_compat_     getline   ue.c me="L193"> 193    s                  s   ue.c#*ass="line" name=inet_sk" class="sref">,aint f="+code=pktoptleve+54"> 154   leve+ef">,aint f="+code=pktopt217ipv6> 152         ipv6    ,79"> 179                        12a5ecific<12/a>
__userue.c#*ass="line" name"L1a>                "L1a>  hre,aint f="+code=pktopt__user" class="sref">__userue.c#*ass="line" name"L152"> 152                )79"> 179                        12a6ecific<12an>
IPPR12a7ecific<12an>
err    179"> 179                        12a8ecific<12an>
>128lue.c#L179" iiflass="line" name=leve+54"> 154   leve+ef"> =  f="+code=pktoptSOL_IPlass="sref">sk_SOL_IP     f>-&gf>-&g151" class="line=inet_sk" class="sref">hg(& 152      sk_typ6     !  f="+code=pktoptSOCK_RAWlass="sref">sk_SOCK_RAW    )""+code=IPPROTO_TCP" class="sref">IPPR129pecific<12an>
sk_udp_pro ue.c.>(&sk_compat_getline   ue.c !  f="+code=pktoptNULs" class="sref">NULs    )79"> 179                        1291ecific<12>);
(&sk_udp_pro ue.c.>(&sk_compat_getline   ue.c ass="line" name=inet_sk" class="sref">,af="+code=pktoptleve+54"> 154   leve+ef">,af="+code=pktopt217ipv6> 152         ipv6    ,79"> 179                        1292ecific<12/a>
                "L1a>  hre,a  152                )179"> 179                    12a3ecific<12) {
(&sk_udp_pro ue.c.>(&sk_getline   ue.c ass="line" name=inet_sk" class="sref">,af="+code=pktoptleve+54"> 154   leve+ef">,af="+code=pktopt217ipv6> 152         ipv6    ,a                 "L1a>  hre,a  152                )179"> 179                    12a4ecific<12>);
 215           1295ecific<12();
 215           1296ecific<121);
 154   leve+ef"> !  f="+code=pktoptSOL_IPV=> 152      SOL_IPV=    )79"> 179                        1297ecific<121);
sk_oNOPROTOOPc          129lue.c ;>129lue.c#L179" iiflass="line" name=217ipv6> 152         ipv6     =  f="+code=pktoptMCASTmMSFILTERlass="sref">sk_MCASTmMSFILTER    )79"> 179                        13specific<13spec(&sk_compat_mc_getline   ue.c ass="line" name=inet_sk" class="sref">,af="+code=pktoptleve+54"> 154   leve+ef">,af="+code=pktopt217ipv6> 152         ipv6    ,a                 "L1a>  hre,a  152                ,79"> 179                        13s1ecific<13s);
 193         getline   lass="sref">sk_     getline   ue.c)179"> 179                    13s2ecific<13sa>
13slue.c#L203" if="+code=pktopterr" class="sref">err       f="+code=pktoptdo_     getline   lass="sref">sk_do_     getline   ue.c ass="line" name=inet_sk" class="sref">,af="+code=pktoptleve+54"> 154   leve+ef">,af="+code=pktopt217ipv6> 152         ipv6    ,a                 "L1a>  hre,a  152                ,79"> 179                        13s4ecific<13s);
 193    MSG_CMSG_COMPAclass="sref">sk_MSG_CMSG_COMPAcue.c)179"> 179                    13s5ecific<13s);
sk_CONFIG_NETFILTERue.c 130lue.c#L116" i3span
/* we need to exclude all possible oNOPROTOOPcs exceptidefaultid="L1*/13slue.c#L167" iiflass="line" name=err" class="sref">err      ="     sk_oNOPROTOOPc     f>-&gf>-&g151" class="line217ipv6> 152         ipv6     !  f="+code=pktopt" nam2292PKTOPcIONSlass="sref">sk_" nam2292PKTOPcIONS    )""+code=IPPROTO_3" class="line" name="13s8ecific<13s);
 152             179"> 179                        13s9ecific<13s>;
 179                        131pecific<131);
get_userue.c 3"> 193    le"> 152             ,a  152                ))#L146" id="L146" class="line" name="1311ecific<131);
sk_oFAULc    , 131lue.c ;>131lue.c#L203" id="L220"3"> 193    l"sra>                  l"sra>   ue.c  )179"> 179                        1314ecific<13a>;
err       f="+code=pktoptcompat_nf getline   lass="sref">sk_compat_nf getline   ue.c ass="line" name=inet_sk" class="sref">,af="+code=pktoptPF_INET=> 152      PF_INET=ef">,79"> 179                        1315ecific<13a>;
 152         ipv6    ,a                 "L1a>  hre,aa>-&g3"> 193    le"> 152             d179"> 179                        1316ecific<13  }
 193    /ale="La>                    le="La>   ue.c  )179"> 179                        1317ecific<13>);
err     g)>131lue.c#L218" id="L218"d="L214"=ss="line" nameerr" class="sref">err       f="+code=pktoptput_user" class="sref">put_userue.c 3"> 193    le"> 152             ,a  152                )179"> 179                    1319ecific<13>);
 215           132pecific<13>);
 215           1321ecific<13>);
(&err    179"> 179                        1322ecific<13/a>
 215           1323ecific<13a>;
>132lue.c    oXPORT_SYMBOsue.c 3"> 193    compat_     getline   lass="sref">sk_compat_     getline   ue.c)179"> 179                    1325ecific<13n5|="co9id="L128" class913n5|>132lue.c#endifine" name="L215"> 215           1326ecific<13a>)
 179                        1327ecific<13a>{

The original LXR software by thL151" classhttp://sourceforge.a>  projects/lxr">LXR community    ,athis experimental version by 51" classmailto:lxr@="nux.no   xr@="nux.noue.c.
xr.="nux.no kindly hosted by 51" classhttp://www.redpill-="npro.no Redpill L"npro AS ,aprovider of L"nux consulting and operations services since 1995.