linux/net/llc/llc_if.c
<<
2.6.6.3/spa 6.3/form 6.3a 2.6.6. href="../linux+v3opt2/net/llc/llc_if.c">2.6.6.3img src="../.static/gfx/right.png" alt=">>">2.3/spa 2.3spa class="lxr_search">2.6. ="+search" method="post" onsubmit="return do_search(this);">2.6.6.3input typn> hidden" namn> navtarget" ption> ">2.6.6.3input typn> text" namn> search" id> search">2.6.6.3butt submit">Search2.6.6.Prefs 6.3/a>2.3/spa 6.6. .3/div 6.6. .3form ac > ="ajax+*" method="post" onsubmit="return false;">2.3input typn> hidden" namn> ajax_lookup" id> ajax_lookup" ption> ">26.6. .3/form 26.6. .3div class="headingbott
search_results" class="search_results" 6 6.6. .3/div 3div id> content"> 3div id> file_contents"
1d/7c/2498a22c3340ee9f74aff25e8e6ff262d4c4_3/0" 
L1" class="line" namn>
L1">. .13/a>3spa
 class="comment">/*3/spa
  
L2" class="line" namn>
L2">. .23/a>3spa
 class="comment"> * llc_if.c - Defines LLC interface to upper layer3/spa
  
L3" class="line" namn>
L3">. .33/a>3spa
 class="comment"> *3/spa
  
L4" class="line" namn>
L4">. .43/a>3spa
 class="comment"> * Copyright (c) 1997 by.Procom Technology, Inc.3/spa
  
L5" class="line" namn>
L5">. .53/a>3spa
 class="comment"> *               2001-2003 by.Arnaldo Carptiho de Melo <acme@conectiva.com.br>3/spa
  
L6" class="line" namn>
L6">. .63/a>3spa
 class="comment"> *3/spa
  
L7" class="line" namn>
L7">. .73/a>3spa
 class="comment"> * This program ca
 be redistributed or modified under the terms of the3/spa
  
L8" class="line" namn>
L8">. .83/a>3spa
 class="comment"> * GNU General Public License as published by.the Free Software Founda  >
.3/spa
  
L9" class="line" namn>
L9">. .93/a>3spa
 class="comment"> * This program is distributed without any warranty or implied warranty3/spa
  
L10" class="line" namn>
L10">. lue=a>3spa
 class="comment"> * of merchantability or fitness for a particular purpose.3/spa
  
L11" class="line" namn>
L11">. 113/a>3spa
 class="comment"> *3/spa
  
L12" class="line" namn>
L12">. 123/a>3spa
 class="comment"> * See the GNU General Public License for more details.3/spa
  
L13" class="line" namn>
L13">. 133/a>3spa
 class="comment"> */3/spa
  
L14" class="line" namn>
L14">. 143/a>#include <linux/gfp.h3/a>> 
L15" class="line" namn>
L15">. 153/a>#include <linux/module.h3/a>> 
L16" class="line" namn>
L16">. 163/a>#include <linux/kernel.h3/a>> 
L17" class="line" namn>
L17">. 173/a>#include <linux/netdevice.h3/a>> 
L18" class="line" namn>
L18">. 183/a>#include <asm/errno.h3/a>> 
L19" class="line" namn>
L19">. 193/a>#include <net/llc_if.h3/a>> 
L20" class="line" namn>
L20">. 203/a>#include <net/llc_sap.h3/a>> 
L21" class="line" namn>
L21">. 213/a>#include <net/llc_s_ev.h3/a>> 
L22" class="line" namn>
L22">. 223/a>#include <net/llc_conn.h3/a>> 
L23" class="line" namn>
L23">. 233/a>#include <net/sock.h3/a>> 
L24" class="line" namn>
L24">. 243/a>#include <net/llc_c_ev.h3/a>> 
L25" class="line" namn>
L25">. 253/a>#include <net/llc_c_ac.h3/a>> 
L26" class="line" namn>
L26">. 263/a>#include <net/llc_c_st.h3/a>> 
L27" class="line" namn>
L27">. 273/a>#include <net/tcp_states.h3/a>> 
L28" class="line" namn>
L28">. 283/a> 
L29" class="line" namn>
L29">. 293/a>3spa
 class="comment">/**3/spa
  
L30" class="line" namn>
L30">. 3ue=a>3spa
 class="comment"> *      llc_build_and_send_pkt - Connec  >
 da a sending for upper layers.3/spa
  
L31" class="line" namn>
L31">. 313/a>3spa
 class="comment"> *      @sk: connec  >
3/spa
  
L32" class="line" namn>
L32">. 323/a>3spa
 class="comment"> *      @skb: packet to send3/spa
  
L33" class="line" namn>
L33">. 333/a>3spa
 class="comment"> *3/spa
  
L34" class="line" namn>
L34">. 343/a>3spa
 class="comment"> *      This func  >
 is called when upper layer wants to send da a using3/spa
  
L35" class="line" namn>
L35">. 353/a>3spa
 class="comment"> *      connec  >
 oriented communica  >
 mode. During sending da a, connec  >
3/spa
  
L36" class="line" namn>
L36">. 363/a>3spa
 class="comment"> *      will be locked and received framns and expired timers will be queued.3/spa
  
L37" class="line" namn>
L37">. 373/a>3spa
 class="comment"> *      Returns 0 for success, -ECONNABORTED when the connec  >
 already3/spa
  
L38" class="line" namn>
L38">. 383/a>3spa
 class="comment"> *      closed and -EBUSY when sending da a is not permitted in this state or3/spa
  
L39" class="line" namn>
L39">. 393/a>3spa
 class="comment"> *      LLC has send a
 I pdu with p bit set to 1 and is waiting for it's3/spa
  
L40" class="line" namn>
L40">. 4ue=a>3spa
 class="comment"> *      response.3/spa
  
L41" class="line" namn>
L41">. 413/a>3spa
 class="comment"> */3/spa
  
L42" class="line" namn>
L42">. 423/a>int.3a href="+code=llc_build_and_send_pkt" class="sref">llc_build_and_send_pkt3/a>(struct.3a href="+code=sock" class="sref">sock3/a> *3a href="+code=sk" class="sref">sk3/a>, struct.3a href="+code=sk_buff" class="sref">sk_buff3/a> *3a href="+code=skb" class="sref">skb3/a>) 
L43" class="line" namn>
L43">. 433/a>{ 
L44" class="line" namn>
L44">. 443/a>        struct.3a href="+code=llc_conn_state_ev" class="sref">llc_conn_state_ev3/a> *3a href="+code=ev" class="sref">ev3/a>; 
L45" class="line" namn>
L45">. 453/a>        int.3a href="+code=rc" class="sref">rc3/a> = -3a href="+code=ECONNABORTED" class="sref">ECONNABORTED3/a>; 
L46" class="line" namn>
L46">. 463/a>        struct.3a href="+code=llc_sock" class="sref">llc_sock3/a> *3a href="+code=llc" class="sref">llc3/a> = 3a href="+code=llc_sk" class="sref">llc_sk3/a>(3a href="+code=sk" class="sref">sk3/a>); 
L47" class="line" namn>
L47">. 473/a> 
L48" class="line" namn>
L48">. 483/a>        if (3a href="+code=unlikely" class="sref">unlikely3/a>(3a href="+code=llc" class="sref">llc3/a>->3a href="+code=state" class="sref">state3/a> == 3a href="+code=LLC_CONN_STATE_ADM" class="sref">LLC_CONN_STATE_ADM3/a>)) 
L49" class="line" namn>
L49">. 493/a>                goto 3a href="+code=out" class="sref">out3/a>; 
L50" class="line" namn>
L50">. 503/a>        3a href="+code=rc" class="sref">rc3/a> = -3a href="+code=EBUSY" class="sref">EBUSY3/a>; 
L51" class="line" namn>
L51">. 513/a>        if (3a href="+code=unlikely" class="sref">unlikely3/a>(3a href="+code=llc_da a_accept_state" class="sref">llc_da a_accept_state3/a>(3a href="+code=llc" class="sref">llc3/a>->3a href="+code=state" class="sref">state3/a>) || 3spa
 class="comment">/* da a_conn_refuse */3/spa
  
L52" class="line" namn>
L52">. 523/a>                     3a href="+code=llc" class="sref">llc3/a>->3a href="+code=p_flag" class="sref">p_flag3/a>)) { 
L53" class="line" namn>
L53">. 533/a>                3a href="+code=llc" class="sref">llc3/a>->3a href="+code=failed_da a_req" class="sref">failed_da a_req3/a> = 1; 
L54" class="line" namn>
L54">. 543/a>                goto 3a href="+code=out" class="sref">out3/a>; 
L55" class="line" namn>
L55">. 553/a>        } 
L56" class="line" namn>
L56">. 563/a>        3a href="+code=ev" class="sref">ev3/a> = 3a href="+code=llc_conn_ev" class="sref">llc_conn_ev3/a>(3a href="+code=skb" class="sref">skb3/a>); 
L57" class="line" namn>
L57">. 573/a>        3a href="+code=ev" class="sref">ev3/a>->3a href="+code=typn" class="sref">typn3/a>      = 3a href="+code=LLC_CONN_EV_TYPE_PRIM" class="sref">LLC_CONN_EV_TYPE_PRIM3/a>; 
L58" class="line" namn>
L58">. 583/a>        3a href="+code=ev" class="sref">ev3/a>->3a href="+code=prim" class="sref">prim3/a>      = 3a href="+code=LLC_DATA_PRIM" class="sref">LLC_DATA_PRIM3/a>; 
L59" class="line" namn>
L59">. 593/a>        3a href="+code=ev" class="sref">ev3/a>->3a href="+code=prim_typn" class="sref">prim_typn3/a> = 3a href="+code=LLC_PRIM_TYPE_REQ" class="sref">LLC_PRIM_TYPE_REQ3/a>; 
L60" class="line" namn>
L60">. 603/a>        3a href="+code=skb" class="sref">skb3/a>->3a href="+code=dev" class="sref">dev3/a>      = 3a href="+code=llc" class="sref">llc3/a>->3a href="+code=dev" class="sref">dev3/a>; 
L61" class="line" namn>
L61">. 613/a>        3a href="+code=rc" class="sref">rc3/a> = 3a href="+code=llc_conn_state_process" class="sref">llc_conn_state_process3/a>(3a href="+code=sk" class="sref">sk3/a>, 3a href="+code=skb" class="sref">skb3/a>); 
L62" class="line" namn>
L62">. 623/a>3a href="+code=out" class="sref">out3/a>: 
L63" class="line" namn>
L63">. 633/a>        return 3a href="+code=rc" class="sref">rc3/a>; 
L64" class="line" namn>
L64">. 643/a>} 
L65" class="line" namn>
L65">. 653/a> 
L66" class="line" namn>
L66">. 663/a>3spa
 class="comment">/**3/spa
  
L67" class="line" namn>
L67">. 673/a>3spa
 class="comment"> *      llc_establish_connec  >
 - Called by upper layer to establish a conn3/spa
  
L68" class="line" namn>
L68">. 683/a>3spa
 class="comment"> *      @sk: connec  >
3/spa
  
L69" class="line" namn>
L69">. 693/a>3spa
 class="comment"> *      @lmac: local mac address3/spa
  
L70" class="line" namn>
L70">. 7ue=a>3spa
 class="comment"> *      @dmac: destina  >
 mac address3/spa
  
L71" class="line" namn>
L71">. 713/a>3spa
 class="comment"> *      @dsap: destina  >
 sap3/spa
  
L72" class="line" namn>
L72">. 723/a>3spa
 class="comment"> *3/spa
  
L73" class="line" namn>
L73">. 733/a>3spa
 class="comment"> *      Upper layer calls this to establish an LLC connec  >
 with a remote3/spa
  
L74" class="line" namn>
L74">. 743/a>3spa
 class="comment"> *      machine. This func  >
 packagns a proper event and sends it connec  >
3/spa
  
L75" class="line" namn>
L75">. 753/a>3spa
 class="comment"> *      component state machine. Success or failure of connec  >
3/spa
  
L76" class="line" namn>
L76">. 763/a>3spa
 class="comment"> *      establishment will inform to upper layer via calling it's confirm3/spa
  
L77" class="line" namn>
L77">. 773/a>3spa
 class="comment"> *      func  >
 and passing proper informa  >
.3/spa
  
L78" class="line" namn>
L78">. 783/a>3spa
 class="comment"> */3/spa
  
L79" class="line" namn>
L79">. 793/a>int.3a href="+code=llc_establish_connec  >
" class="sref">llc_establish_connec  >
3/a>(struct.3a href="+code=sock" class="sref">sock3/a> *3a href="+code=sk" class="sref">sk3/a>, 3a href="+code=u8" class="sref">u83/a> *3a href="+code=lmac" class="sref">lmac3/a>, 3a href="+code=u8" class="sref">u83/a> *3a href="+code=dmac" class="sref">dmac3/a>, 3a href="+code=u8" class="sref">u83/a> 3a href="+code=dsap" class="sref">dsap3/a>) 
L80" class="line" namn>
L80">. 803/a>{ 
L81" class="line" namn>
L81">. 813/a>        int.3a href="+code=rc" class="sref">rc3/a> = -3a href="+code=EISCONN" class="sref">EISCONN3/a>; 
L82" class="line" namn>
L82">. 823/a>        struct.3a href="+code=llc_addr" class="sref">llc_addr3/a> 3a href="+code=laddr" class="sref">laddr3/a>, 3a href="+code=daddr" class="sref">daddr3/a>; 
L83" class="line" namn>
L83">. 833/a>        struct.3a href="+code=sk_buff" class="sref">sk_buff3/a> *3a href="+code=skb" class="sref">skb3/a>; 
L84" class="line" namn>
L84">. 843/a>        struct.3a href="+code=llc_sock" class="sref">llc_sock3/a> *3a href="+code=llc" class="sref">llc3/a> = 3a href="+code=llc_sk" class="sref">llc_sk3/a>(3a href="+code=sk" class="sref">sk3/a>); 
L85" class="line" namn>
L85">. 853/a>        struct.3a href="+code=sock" class="sref">sock3/a> *3a href="+code=existing" class="sref">existing3/a>; 
L86" class="line" namn>
L86">. 863/a> 
L87" class="line" namn>
L87">. 873/a>        3a href="+code=laddr" class="sref">laddr3/a>.3a href="+code=lsap" class="sref">lsap3/a> = 3a href="+code=llc" class="sref">llc3/a>->3a href="+code=sap" class="sref">sap3/a>->3a href="+code=laddr" class="sref">laddr3/a>.3a href="+code=lsap" class="sref">lsap3/a>; 
L88" class="line" namn>
L88">. 883/a>        3a href="+code=daddr" class="sref">daddr3/a>.3a href="+code=lsap" class="sref">lsap3/a> = 3a href="+code=dsap" class="sref">dsap3/a>; 
L89" class="line" namn>
L89">. 893/a>        3a href="+code=memcpy" class="sref">memcpy3/a>(3a href="+code=daddr" class="sref">daddr3/a>.3a href="+code=mac" class="sref">mac3/a>, 3a href="+code=dmac" class="sref">dmac3/a>, sizeof(3a href="+code=daddr" class="sref">daddr3/a>.3a href="+code=mac" class="sref">mac3/a>)); 
L90" class="line" namn>
L90">. 903/a>        3a href="+code=memcpy" class="sref">memcpy3/a>(3a href="+code=laddr" class="sref">laddr3/a>.3a href="+code=mac" class="sref">mac3/a>, 3a href="+code=lmac" class="sref">lmac3/a>, sizeof(3a href="+code=laddr" class="sref">laddr3/a>.3a href="+code=mac" class="sref">mac3/a>)); 
L91" class="line" namn>
L91">. 913/a>        3a href="+code=existing" class="sref">existing3/a> = 3a href="+code=llc_lookup_established" class="sref">llc_lookup_established3/a>(3a href="+code=llc" class="sref">llc3/a>->3a href="+code=sap" class="sref">sap3/a>, &3a href="+code=daddr" class="sref">daddr3/a>, &3a href="+code=laddr" class="sref">laddr3/a>); 
L92" class="line" namn>
L92">. 923/a>        if (3a href="+code=existing" class="sref">existing3/a>) { 
L93" class="line" namn>
L93">. 933/a>                if (3a href="+code=existing" class="sref">existing3/a>->3a href="+code=sk_state" class="sref">sk_state3/a> == 3a href="+code=TCP_ESTABLISHED" class="sref">TCP_ESTABLISHED3/a>) { 
L94" class="line" namn>
L94">. 943/a>                        3a href="+code=sk" class="sref">sk3/a> = 3a href="+code=existing" class="sref">existing3/a>; 
L95" class="line" namn>
L95">. 953/a>                        goto 3a href="+code=out_put" class="sref">out_put3/a>; 
L96" class="line" namn>
L96">. 963/a>                } else 
L97" class="line" namn>
L97">. 973/a>                        3a href="+code=sock_put" class="sref">sock_put3/a>(3a href="+code=existing" class="sref">existing3/a>); 
L98" class="line" namn>
L98">. 983/a>        } 
L99" class="line" namn>
L99">. 993/a>        3a href="+code=sock_hold" class="sref">sock_hold3/a>(3a href="+code=sk" class="sref">sk3/a>); 
L100" class="line" namn>
L100">.1003/a>        3a href="+code=rc" class="sref">rc3/a> = -3a href="+code=ENOMEM" class="sref">ENOMEM3/a>; 
L101" class="line" namn>
L101">.1013/a>        3a href="+code=skb" class="sref">skb3/a> = 3a href="+code=alloc_skb" class="sref">alloc_skb3/a>(0, 3a href="+code=GFP_ATOMIC" class="sref">GFP_ATOMIC3/a>); 
L102" class="line" namn>
L102">.1023/a>        if (3a href="+code=skb" class="sref">skb3/a>) { 
L103" class="line" namn>
L103">.1033/a>                struct.3a href="+code=llc_conn_state_ev" class="sref">llc_conn_state_ev3/a> *3a href="+code=ev" class="sref">ev3/a> = 3a href="+code=llc_conn_ev" class="sref">llc_conn_ev3/a>(3a href="+code=skb" class="sref">skb3/a>); 
L104" class="line" namn>
L104">.1043/a> 
L105" class="line" namn>
L105">.1053/a>                3a href="+code=ev" class="sref">ev3/a>->3a href="+code=typn" class="sref">typn3/a>      = 3a href="+code=LLC_CONN_EV_TYPE_PRIM" class="sref">LLC_CONN_EV_TYPE_PRIM3/a>; 
L106" class="line" namn>
L106">.1063/a>                3a href="+code=ev" class="sref">ev3/a>->3a href="+code=prim" class="sref">prim3/a>      = 3a href="+code=LLC_CONN_PRIM" class="sref">LLC_CONN_PRIM3/a>; 
L107" class="line" namn>
L107">.1073/a>                3a href="+code=ev" class="sref">ev3/a>->3a href="+code=prim_typn" class="sref">prim_typn3/a> = 3a href="+code=LLC_PRIM_TYPE_REQ" class="sref">LLC_PRIM_TYPE_REQ3/a>; 
L108" class="line" namn>
L108">.1083/a>                3a href="+code=skb_set_owner_w" class="sref">skb_set_owner_w3/a>(3a href="+code=skb" class="sref">skb3/a>, 3a href="+code=sk" class="sref">sk3/a>); 
L109" class="line" namn>
L109">.1093/a>                3a href="+code=rc" class="sref">rc3/a> = 3a href="+code=llc_conn_state_process" class="sref">llc_conn_state_process3/a>(3a href="+code=sk" class="sref">sk3/a>, 3a href="+code=skb" class="sref">skb3/a>); 
L110" class="line" namn>
L110">.1103/a>        } 
L111" class="line" namn>
L111">.1113/a>3a href="+code=out_put" class="sref">out_put3/a>: 
L112" class="line" namn>
L112">.1123/a>        3a href="+code=sock_put" class="sref">sock_put3/a>(3a href="+code=sk" class="sref">sk3/a>); 
L113" class="line" namn>
L113">.1133/a>        return 3a href="+code=rc" class="sref">rc3/a>; 
L114" class="line" namn>
L114">.1143/a>} 
L115" class="line" namn>
L115">.1153/a> 
L116" class="line" namn>
L116">.1163/a>3spa
 class="comment">/**3/spa
  
L117" class="line" namn>
L117">.1173/a>3spa
 class="comment"> *      llc_send_disc - Called by upper layer to close a connec  >
3/spa
  
L118" class="line" namn>
L118">.1183/a>3spa
 class="comment"> *      @sk: connec  >
 to be closed3/spa
  
L119" class="line" namn>
L119">.1193/a>3spa
 class="comment"> *3/spa
  
L120" class="line" namn>
L120">.12ue=a>3spa
 class="comment"> *      Upper layer calls this when it wants to close an established LLC3/spa
  
L121" class="line" namn>
L121">.1213/a>3spa
 class="comment"> *      connec  >
 with a remote machine. This func  >
 packagns a proper event3/spa
  
L122" class="line" namn>
L122">.1223/a>3spa
 class="comment"> *      and sends it to connec  >
 component state machine. Returns 0 for3/spa
  
L123" class="line" namn>
L123">.1233/a>3spa
 class="comment"> *      success, 1 otherwise.3/spa
  
L124" class="line" namn>
L124">.1243/a>3spa
 class="comment"> */3/spa
  
L125" class="line" namn>
L125">.1253/a>int.3a href="+code=llc_send_disc" class="sref">llc_send_disc3/a>(struct.3a href="+code=sock" class="sref">sock3/a> *3a href="+code=sk" class="sref">sk3/a>) 
L126" class="line" namn>
L126">.1263/a>{ 
L127" class="line" namn>
L127">.1273/a>        3a href="+code=u16" class="sref">u163/a> 3a href="+code=rc" class="sref">rc3/a> = 1; 
L128" class="line" namn>
L128">.1283/a>        struct.3a href="+code=llc_conn_state_ev" class="sref">llc_conn_state_ev3/a> *3a href="+code=ev" class="sref">ev3/a>; 
L129" class="line" namn>
L129">.1293/a>        struct.3a href="+code=sk_buff" class="sref">sk_buff3/a> *3a href="+code=skb" class="sref">skb3/a>; 
L130" class="line" namn>
L130">.13ue=a> 
L131" class="line" namn>
L131">.1313/a>        3a href="+code=sock_hold" class="sref">sock_hold3/a>(3a href="+code=sk" class="sref">sk3/a>); 
L132" class="line" namn>
L132">.1323/a>        if (3a href="+code=sk" class="sref">sk3/a>->3a href="+code=sk_typn" class="sref">sk_typn3/a> != 3a href="+code=SOCK_STREAM" class="sref">SOCK_STREAM3/a> || 3a href="+code=sk" class="sref">sk3/a>->3a href="+code=sk_state" class="sref">sk_state3/a> != 3a href="+code=TCP_ESTABLISHED" class="sref">TCP_ESTABLISHED3/a> || 
L133" class="line" namn>
L133">.1333/a>            3a href="+code=llc_sk" class="sref">llc_sk3/a>(3a href="+code=sk" class="sref">sk3/a>)->3a href="+code=state" class="sref">state3/a> == 3a href="+code=LLC_CONN_STATE_ADM" class="sref">LLC_CONN_STATE_ADM3/a> || 
L134" class="line" namn>
L134">.1343/a>            3a href="+code=llc_sk" class="sref">llc_sk3/a>(3a href="+code=sk" class="sref">sk3/a>)->3a href="+code=state" class="sref">state3/a> == 3a href="+code=LLC_CONN_OUT_OF_SVC" class="sref">LLC_CONN_OUT_OF_SVC3/a>) 
L135" class="line" namn>
L135">.1353/a>                goto 3a href="+code=out" class="sref">out3/a>; 
L136" class="line" namn>
L136">.1363/a>        3spa
 class="comment">/*3/spa
  
L137" class="line" namn>
L137">.1373/a>3spa
 class="comment">         * Postpone unassigning the connec  >
 from its SAP and returning the3/spa
  
L138" class="line" namn>
L138">.1383/a>3spa
 class="comment">         * connec  >
 until all ACTIONs have bee
 completely executed3/spa
  
L139" class="line" namn>
L139">.1393/a>3spa
 class="comment">         */3/spa
  
L140" class="line" namn>
L140">.1403/a>        3a href="+code=skb" class="sref">skb3/a> = 3a href="+code=alloc_skb" class="sref">alloc_skb3/a>(0, 3a href="+code=GFP_ATOMIC" class="sref">GFP_ATOMIC3/a>); 
L141" class="line" namn>
L141">.1413/a>        if (!3a href="+code=skb" class="sref">skb3/a>) 
L142" class="line" namn>
L142">.1423/a>                goto 3a href="+code=out" class="sref">out3/a>; 
L143" class="line" namn>
L143">.1433/a>        3a href="+code=skb_set_owner_w" class="sref">skb_set_owner_w3/a>(3a href="+code=skb" class="sref">skb3/a>, 3a href="+code=sk" class="sref">sk3/a>); 
L144" class="line" namn>
L144">.1443/a>        3a href="+code=sk" class="sref">sk3/a>->3a href="+code=sk_state" class="sref">sk_state3/a>  = 3a href="+code=TCP_CLOSING" class="sref">TCP_CLOSING3/a>; 
L145" class="line" namn>
L145">.1453/a>        3a href="+code=ev" class="sref">ev3/a>            = 3a href="+code=llc_conn_ev" class="sref">llc_conn_ev3/a>(3a href="+code=skb" class="sref">skb3/a>); 
L146" class="line" namn>
L146">.1463/a>        3a href="+code=ev" class="sref">ev3/a>->3a href="+code=typn" class="sref">typn3/a>      = 3a href="+code=LLC_CONN_EV_TYPE_PRIM" class="sref">LLC_CONN_EV_TYPE_PRIM3/a>; 
L147" class="line" namn>
L147">.1473/a>        3a href="+code=ev" class="sref">ev3/a>->3a href="+code=prim" class="sref">prim3/a>      = 3a href="+code=LLC_DISC_PRIM" class="sref">LLC_DISC_PRIM3/a>; 
L148" class="line" namn>
L148">.1483/a>        3a href="+code=ev" class="sref">ev3/a>->3a href="+code=prim_typn" class="sref">prim_typn3/a> = 3a href="+code=LLC_PRIM_TYPE_REQ" class="sref">LLC_PRIM_TYPE_REQ3/a>; 
L149" class="line" namn>
L149">.1493/a>        3a href="+code=rc" class="sref">rc3/a> = 3a href="+code=llc_conn_state_process" class="sref">llc_conn_state_process3/a>(3a href="+code=sk" class="sref">sk3/a>, 3a href="+code=skb" class="sref">skb3/a>); 
L150" class="line" namn>
L150">.1503/a>3a href="+code=out" class="sref">out3/a>: 
L151" class="line" namn>
L151">.1513/a>        3a href="+code=sock_put" class="sref">sock_put3/a>(3a href="+code=sk" class="sref">sk3/a>); 
L152" class="line" namn>
L152">.1523/a>        return 3a href="+code=rc" class="sref">rc3/a>; 
L153" class="line" namn>
L153">.1533/a>} 
L154" class="line" namn>
L154">.1543/a> 
L155" class="line" namn>
L155">.1553/a>
The original LXR software by.the LXR community3/a>, this experimental vers > by.lxr@linux.no3/a>. 3/div 3div class="subfooter"> lxr.linux.no kindly hosted by Redpill Linpro AS3/a>, provider of Linux consulting and opera > s services since 1995. 3/div 3/body 3/html