linux/net/core/dst.c
<<
ptio /spatio /formio a ptio href="../linux+v3.7 op/net/core/dst.c">ptio img src="../.static/gfx/right.png" alt=">>">pt /spatiopt spat class="lxr_search">ptioptio input typaluhidden" namalunavtarget" on valu">ptio input typalutext" namalusearch" idlusearch">ptio buttptitypalusubmit">Searchptio Prefso /a>pt /spatioio /divioio form ac/opt="ajax+*" method="post" onsubmit="return false;">pt input typaluhidden" namaluajax_lookup" idluajax_lookup" on valu">pio /formiopio div class="headingbottpm">o div idlufile_contents"i
   1
/a>
spat class="comment">/*
/spatio   2
/a>
spat class="comment"> * net/core/dst.cio     Protocol independent de3"v4. * net/c<0pton value="v3.182 che.ore/dst.c#L2" idluL2" class="line3 namalu32">   2
/a>
spat class3"comm3nt"> * net/core/dst.cio     ore/dst.c#L2" idluL2" class="line4 namalu42">   2
/a>
spat class4"comm4nt"> * net/core/dst.cio     PAuretrs:             Alexey KuzuL2sov, <kuzuL2@ms2.inr.ac.ru
spaore/dst.c#L2" idluL2" class="line5 namalu52">   2
/a>
spat class5"comm5nt"> * net/core/dst.cio     ore/dst.c#L2" idluL2" class="line6 namalu62">   2
/a>
spat class6"comm6nt"> * net/core/dst.cio     /ore/dst.c#L2" idluL2" class="line7 namalu72">   2
/a>
spat class7"comm7divioc#L2" idluL2" class="line8 namalu82">   2
/a>
spat class8"comm8divi#iefsude <c#L2" idliefsudee/dst./bitops.h2">   2
/f" i">/dst./bitops.hdivi
spaoc#L2" idluL2" class="line9 namalu92">   2
/a>
spat class9"comm9divi#iefsude <c#L2" idliefsudee/dst./errno.h2">   2
/f" i">/dst./errno.hdivi
spaoc#L2" idluL2" class="line10 namaluL01">   1
/a>
spat class=0"com
	  vi#iefsude <c#L2" idliefsudee/dst./init.h2">   2
/f" i">/dst./init.hdivi
spaoc#L2" idluL2" class="line1" namaluLL1">   1
/a>
spat class=="com11  vi#iefsude <c#L2" idliefsudee/dst./kernel.h2">   2
/f" i">/dst./kernel.hdivi
spaoc#L2" idluL2" class="line1" namalu1L2">   2
/a>
spat class1="com12  vi#iefsude <c#L2" idliefsudee/dst./workqueue.h2">   2
/f" i">/dst./workqueue.hdivi
spaoc#L2" idluL2" class="line13 namalu132">   2
/a>
spat class13"com13  vi#iefsude <c#L2" idliefsudee/dst./mm.h2">   2
/f" i">/dst./mm.hdivi
spaoc#L2" idluL2" class="line14 namalu142">   2
/a>
spat class14"com14  vi#iefsude <c#L2" idliefsudee/dst./module.h2">   2
/f" i">/dst./module.hdivi
spaoc#L2" idluL2" class="line15 namalu152">   2
/a>
spat class15"com15  vi#iefsude <c#L2" idliefsudee/dst./slab.h2">   2
/f" i">/dst./slab.hdivi
spaoc#L2" idluL2" class="line16 namalu162">   2
/a>
spat class16"com16  vi#iefsude <c#L2" idliefsudee/dst./uL2device.h2">   2
/f" i">/dst./uL2device.hdivi
spaoc#L2" idluL2" class="line17 namalu172">   2
/a>
spat class17"com17  vi#iefsude <c#L2" idliefsudee/dst./skbuff.h2">   2
/f" i">/dst./skbuff.hdivi
spaoc#L2" idluL2" class="line18 namalu182">   2
/a>
spat class18"com18divi#iefsude <c#L2" idliefsudee/dst./str   2
/f" i">/dst./str   2
/a>
spat class19"com19divi#iefsude <c#L2" idliefsudee/dst./ax_ls.h2">   2
/f" i">/dst./ax_ls.hdivi
spaoc#L2" idluL2" class="line20 namalu201">   1
/a>
spat class20"com2	  vi#iefsude <c#L2" idliefsudeeuL2"uL2_t cle/dce.h2">   2
/f" i">uL2"uL2_t cle/dce.hdivi
spaoc#L2" idluL2" class="line2" namalu2L1">   1
/a>
spat class2="com21  vi#iefsude <c#L2" idliefsudee/dst./sched.h2">   2
/f" i">/dst./sched.hdivi
spaoc#L2" idluL2" class="line2" namaluLL2">   2
/a>
spat class=="com22  vi#iefsude <c#L2" idliefsudee/dst./	  
etch.h2">   2
/f" i">/dst./	  
etch.hdivi
spaoc#L2" idluL2" class="line23 namalu232">   2
/a>
spat class23"com23divioc#L2" idluL2" class="line24 namalu242">   2
/a>
spat class24"com24  vi#iefsude <c#L2" idliefsudeeuL2"s="lh2">   2
/f" i">uL2"s="lhdivi
spaoc#L2" idluL2" class="line25 namalu252">   2
/a>
spat class25"com25divioc#L2" idluL2" class="line26 namalu262">   2
/a>
spat class26"com26nt"> * net/core/dst.cio   /core/dst.c#L2" idluL2" class="line"7 namalu272">   2
/a>
spat class27"com27nt"> * net/core/dst.cio     PTheory of oper"v3.1s:ore/dst.c#L2" idluL2" class="line"8 namalu282">   2
/a>
spat class28"com28nt"> * net/core/dst.cio     P1) We use a list, p3"vected by a spinlock, to addore/dst.c#L2" idluL2" class="line"9 namalu292">   2
/a>
spat class29"com29nt"> * net/core/dst.cio     PPPPnew io ries from ivih BH and non-BH done"xt.ore/dst.c#L2" idluL2" class="line30 namalu301">   1
/a>
spat class30"com30nt"> * net/core/dst.cio     P2) In order to keep spinlock held for a small valay,ore/dst.c#L2" idluL2" class="line3" namalu3L1">   1
/a>
spat class3="com3ent">/*
/spatio   2
/a>
spat class3="com3ent"> * net/core/dst.cio     PPPPio ries, that are handled by the garbage dol 
/f threadore/dst.c#L2" idluL2" class="line33 namalu332">   2
/a>
spat class33"com33nt"> * net/core/dst.cio     PPPPfired by a workqueue.ore/dst.c#L2" idluL2" class="line34 namalu342">   2
/a>
spat class34"com34nt"> * net/core/dst.cio     P3)PThis list is guarded by a mue"x,ore/dst.c#L2" idluL2" class="line35 namalu352">   2
/a>
spat class35"com35nt"> * net/core/dst.cio     PPPPso that the gc_task and s="_dev_evio () cnetbe synchronized.ore/dst.c#L2" idluL2" class="line36 namalu362">   2
/a>
spat class36"com36nt"> * net/core/dst.cio     /ore/dst.c#L2" idluL2" class="line37 namalu372">   2
/a>
spat class37"com37divioc#L2" idluL2" class="line38 namalu382">   2
/a>
spat class38"com38nt"> * net/core/dst.cio   /core/dst.c#L2" idluL2" class="line39 namalu392">   2
/a>
spat class39"com39nt"> * net/core/dst.cio     PWe want to keep lock & list close togetherore/dst.c#L2" idluL2" class="line40 namalu401">   1
/a>
spat class40"com40nt"> * net/core/dst.cio     Pto dirty as few 2 che a>
ss as possible in __s="_f" e().ore/dst.c#L2" idluL2" class="line4" namalu4L1">   1
/a>
spat class4="com4ent">/*
/spatio   2
/a>
spat class4="com4ent"> * net/core/dst.cio     /ore/dst.c#L2" idluL2" class="line43 namalu432">   2
/a>
spat class43"com43nt">alt="& stru/f {.c#L2" idluL2" class="line44 namalu442">   2
/a>
spat class44"com44nt">        =net/core/code=spinlock_ts"o	 ioio " i">spinlock_tnt">              =net/core/code=locks"o	 ioio " i">locknt">aoc#L2" idluL2" class="line45 namalu452">   2
/a>
spat class45"com45nt">        stru/f =net/core/code=s="_io rys"o	 ioio " i">s="_io rynt">        *=net/core/code=lists"o	 ioio " i">listnt">aoc#L2" idluL2" class="line46 namalu462">   2
/a>
spat class46"com46nt">        unsignad long           =net/core/code=timer_iefs"o	 ioio " i">timer_iefnt">aoc#L2" idluL2" class="line47 namalu472">   2
/a>
spat class47"com47nt">        unsignad long           =net/core/code=timer_expiress"o	 ioio " i">timer_expiresnt">aoc#L2" idluL2" class="line48 namalu482">   2
/a>
spat class48"com48nt">} =net/core/code=s="_garbages"o	 ioio " i">s="_garbagent"> = {.c#L2" idluL2" class="line49 namalu492">   2
/a>
spat class49"com49nt">        .=net/core/code=locks"o	 ioio " i">locknt"> = =net/core/code=__SPIN_LOCK_UNLOCKEDs"o	 ioio " i">__SPIN_LOCK_UNLOCKEDnt">(=net/core/code=s="_garbages"o	 ioio " i">s="_garbagent">.=net/core/code=locks"o	 ioio " i">locknt">),.c#L2" idluL2" class="line50 namalu501">   1
/a>
spat class50"com50nt">        .=net/core/code=timer_iefs"o	 ioio " i">timer_iefnt"> = =net/core/code=DST_GC_MAXs"o	 ioio " i">DST_GC_MAXnt">,.c#L2" idluL2" class="line5" namalu5L1">   1
/a>
spat class5="com5ent">}aoc#L2" idluL2" class="line5" namalu5L2">   2
/a>
spat class5="com52nt">alt="& void =net/core/code=s="_gc_tasks"o	 ioio " i">s="_gc_tasknt">(stru/f =net/core/code=work_stru/fs"o	 ioio " i">work_stru/fnt"> *=net/core/code=works"o	 ioio " i">worknt">)aoc#L2" idluL2" class="line53 namalu532">   2
/a>
spat class53"com53nt">alt="& void =net/core/code=___s="_f" es"o	 ioio " i">___s="_f" ent">(stru/f =net/core/code=s="_io rys"o	 ioio " i">s="_io rynt"> *=net/core/code=dsts"o	 ioio " i">dstnt">)aoc#L2" idluL2" class="line54 namalu542">   2
/a>
spat class54"com54divioc#L2" idluL2" class="line55 namalu552">   2
/a>
spat class55"com55nt">alt="& =net/core/code=DECLARE_DELAYED_WORKs"o	 ioio " i">DECLARE_DELAYED_WORKnt">(=net/core/code=s="_gc_works"o	 ioio " i">s="_gc_worknt">, =net/core/code=s="_gc_tasks"o	 ioio " i">s="_gc_tasknt">)aoc#L2" idluL2" class="line56 namalu562">   2
/a>
spat class56"com56divioc#L2" idluL2" class="line57 namalu572">   2
/a>
spat class57"com57nt">alt="& =net/core/code=DEFINE_MUTEXs"o	 ioio " i">DEFINE_MUTEXnt">(=net/core/code=s="_gc_mue"xs"o	 ioio " i">s="_gc_mue"xnt">)aoc#L2" idluL2" class="line58 namalu582">   2
/a>
spat class58"com58nt"> * net/core/dst.cio   /core/dst.c#L2" idluL2" class="line59 namalu592">   2
/a>
spat class59"com59nt"> * net/core/dst.cio     Plong lived io ries are maintained in this list, guarded by s="_gc_mue"xnte/dst.c#L2" idluL2" class="line60 namalu601">   1
/a>
spat class60"com60nt"> * net/core/dst.cio     /ore/dst.c#L2" idluL2" class="line6" namalu6L1">   1
/a>
spat class6="com61nt">alt="& stru/f =net/core/code=s="_io rys"o	 ioio " i">s="_io rynt">         *=net/core/code=dst_busy_lists"o	 ioio " i">dst_busy_listnt">aoc#L2" idluL2" class="line6" namalu6L2">   2
/a>
spat class6="com62divioc#L2" idluL2" class="line63 namalu632">   2
/a>
spat class63"com63nt">alt="& void =net/core/code=s="_gc_tasks"o	 ioio " i">s="_gc_tasknt">(stru/f =net/core/code=work_stru/fs"o	 ioio " i">work_stru/fnt"> *=net/core/code=works"o	 ioio " i">worknt">)oc#L2" idluL2" class="line64 namalu642">   2
/a>
spat class64"com64divi{.c#L2" idluL2" class="line65 namalu652">   2
/a>
spat class65"com65nt">        int    =net/core/code=valayeds"o	 ioio " i">salayednt"> = 0aoc#L2" idluL2" class="line66 namalu662">   2
/a>
spat class66"com66nt">        int    =net/core/code=work_pers="heds"o	 ioio " i">work_pers="hednt"> = 0aoc#L2" idluL2" class="line67 namalu672">   2
/a>
spat class67"com67nt">        unsignad long =net/core/code=expiress"o	 ioio " i">expiresnt"> = ~0Laoc#L2" idluL2" class="line68 namalu682">   2
/a>
spat class68"com68nt">        stru/f =net/core/code=s="_io rys"o	 ioio " i">s="_io rynt"> *=net/core/code=dsts"o	 ioio " i">dstnt">, *=net/core/code=nusearo	 ioio " i">nusent">, =net/core/code=io  aro	 ioio " i">heador">aoc#L2" idluL2" class="line69 namalu692">   2
/a>
spat class69"com69nt">        stru/f =net/core/code=s="_io rys"o	 ioio " i">s="_io rynt"> *=net/core/code=	 its"o	 ioio " i">lastnt"> = &=net/core/code=io  aro	 ioio " i">heador">aoc#L2" idluL2" class="line70 namalu701">   1
/a>
spat class70"com70divioc#L2" idluL2" class="line7" namalu7L1">   1
/a>
spat class7="com71nt">        =net/core/code=mue"x_locks"o	 ioio " i">mue"x_locknt">(&=net/core/code=s="_gc_mue"xs"o	 ioio " i">s="_gc_mue"xnt">)aoc#L2" idluL2" class="line7" namalu7L2">   2
/a>
spat class7="com72nt">        =net/core/code=nusearo	 ioio " i">nusent"> = =net/core/code=dst_busy_lists"o	 ioio " i">dst_busy_listnt">aoc#L2" idluL2" class="line73 namalu732">   2
/a>
spat class73"com73divioc#L2" idluL2" class="line74 namalu742">   2
/a>
spat class74"com74nt"> net/core/code=loops"o	 ioio " i">loopnt">:oc#L2" idluL2" class="line75 namalu752">   2
/a>
spat class75"com75nt">        while ((=net/core/code=s="s"o	 ioio " i">dstnt"> = =net/core/code=nusearo	 ioio " i">nusent">) != =net/core/code=NULLaro	 ioio " i">NULLnt">) {.c#L2" idluL2" class="line76 namalu762">   2
/a>
spat class76"com76nt">                =net/core/code=nusearo	 ioio " i">nusent"> = =net/core/code=dsts"o	 ioio " i">dstnt">-
spaonet/core/code=nusearo	 ioio " i">nusent">aoc#L2" idluL2" class="line77 namalu772">   2
/a>
spat class77"com77nt">                =net/core/code=	  
etcharo	 ioio " i">	  
etchnt">(&=net/core/code=nusearo	 ioio " i">nusent">-
spaonet/core/code=nusearo	 ioio " i">nusent">)aoc#L2" idluL2" class="line78 namalu782">   2
/a>
spat class78"com78nt">                =net/core/code=donddivichedaro	 ioio " i">donddivichednt">()aoc#L2" idluL2" class="line79 namalu792">   2
/a>
spat class79"com79nt">                if (=net/core/code=likelys"o	 ioio " i">likelynt">(=net/core/code=atomic_ro  aro	 ioio " i">atomic_ro  nt">(&=net/core/code=s="s"o	 ioio " i">dstnt">-
spaonet/core/code=__rofcn"s"o	 ioio " i">__rofcn"nt">))) {.c#L2" idluL2" class="line80 namalu801">   1
/a>
spat class80"com80nt">                        =net/core/code=	 its"o	 ioio " i">lastnt">-
spaonet/core/code=nusearo	 ioio " i">nusent"> = =net/core/code=dsts"o	 ioio " i">dstnt">aoc#L2" idluL2" class="line8" namalu8L1">   1
/a>
spat class8="com81nt">                        =net/core/code=	 its"o	 ioio " i">lastnt"> = =net/core/code=dsts"o	 ioio " i">dstnt">aoc#L2" idluL2" class="line8" namalu8L2">   2
/a>
spat class8="com82nt">                        =net/core/code=valayeds"o	 ioio " i">salayednt">++aoc#L2" idluL2" class="line83 namalu832">   2
/a>
spat class83"com83nt">                        doneinueaoc#L2" idluL2" class="line84 namalu842">   2
/a>
spat class84"com84nt">                }oc#L2" idluL2" class="line85 namalu852">   2
/a>
spat class85"com85nt">                =net/core/code=work_pers="heds"o	 ioio " i">work_pers="hednt">++aoc#L2" idluL2" class="line86 namalu862">   2
/a>
spat class86"com86divioc#L2" idluL2" class="line87 namalu872">   2
/a>
spat class87"com87nt">                =net/core/code=s="s"o	 ioio " i">dstnt"> = =net/core/code=s="_destroys"o	 ioio " i">s="_destroynt">(=net/core/code=s="s"o	 ioio " i">dstnt">)aoc#L2" idluL2" class="line88 namalu882">   2
/a>
spat class88"com88nt">                if (=net/core/code=s="s"o	 ioio " i">dstnt">) {.c#L2" idluL2" class="line89 namalu892">   2
/a>
spat class89"com89nt">                        =* net/core/dst.cio   /c NOHASH and still   
erenced. Unless it is alro  yore/dst.c#L2" idluL2" class="line90 namalu901">   1
/a>
spat class90"com90nt"> * net/core/dst.cio                            * on gc list, invalidate it and addPto gc list.ore/dst.c#L2" idluL2" class="line9" namalu9L1">   1
/a>
spat class9="com9ent">/*
/spatio   2
/a>
spat class9="com9ent"> * net/core/dst.cio                            * Note: ypal is temporary. Actually, NOHASH s="'sore/dst.c#L2" idluL2" class="line93 namalu932">   2
/a>
spat class93"com93nt"> * net/core/dst.cio                            * musttbe obsoleted when par="n is obsoleted.ore/dst.c#L2" idluL2" class="line94 namalu942">   2
/a>
spat class94"com94nt"> * net/core/dst.cio                            * But we do not have state "obsoleted, butore/dst.c#L2" idluL2" class="line95 namalu952">   2
/a>
spat class95"com95nt"> * net/core/dst.cio                            *   
erenced by par="n",Pso it is t;">   2
/a>
spat class96"com96nt"> * net/core/dst.cio                            */ore/dst.c#L2" idluL2" class="line97 namalu972">   2
/a>
spat class97"com97nt">                        if (=net/core/code=s="s"o	 ioio " i">dstnt">-
spaonet/core/code=obsoletes"o	 ioio " i">obsoletent"> 
spa 0)oc#L2" idluL2" class="line98 namalu982">   2
/a>
spat class98"com98nt">                                doneinueaoc#L2" idluL2" class="line99 namalu992">   2
/a>
spat class99"com99divioc#L2" idluL2" class="line100 namaluL001">   1
/a>
spat class=00"co=00nt">                        =net/core/code=___s="_f" es"o	 ioio " i">___s="_f" ent">(=net/core/code=s="s"o	 ioio " i">dstnt">)aoc#L2" idluL2" class="line10" namaluL0L1">   1
/a>
spat class=01"co=01nt">                        =net/core/code=dsts"o	 ioio " i">dstnt">-
spaonet/core/code=nusearo	 ioio " i">nusent"> = =net/core/code=nusearo	 ioio " i">nusent">aoc#L2" idluL2" class="line10" namalu10L2">   2
/a>
spat class102"co=02nt">                        =net/core/code=nusearo	 ioio " i">nusent"> = =net/core/code=dsts"o	 ioio " i">dstnt">aoc#L2" idluL2" class="line103 namalu1032">   2
/a>
spat class103"co=03nt">                }oc#L2" idluL2" class="line104 namalu1042">   2
/a>
spat class104"co=04nt">        }oc#L2" idluL2" class="line105 namalu1052">   2
/a>
spat class105"co=05divioc#L2" idluL2" class="line106 namalu1062">   2
/a>
spat class106"co=06nt">        =net/core/code=spin_lock_bharo	 ioio " i">spin_lock_bhnt">(&=net/core/code=s="_garbages"o	 ioio " i">s="_garbagent">.=net/core/code=locks"o	 ioio " i">locknt">)aoc#L2" idluL2" class="line107 namalu1072">   2
/a>
spat class107"co=07nt">        =net/core/code=nusearo	 ioio " i">nusent"> = =net/core/code=dst_garbages"o	 ioio " i">s="_garbagent">.=net/core/code=lists"o	 ioio " i">listnt">aoc#L2" idluL2" class="line108 namalu1082">   2
/a>
spat class108"co=08nt">        if (=net/core/code=nusearo	 ioio " i">nusent">) {.c#L2" idluL2" class="line109 namalu1092">   2
/a>
spat class109"co=09nt">                =net/core/code=dst_garbages"o	 ioio " i">s="_garbagent">.=net/core/code=lists"o	 ioio " i">listnt"> = =net/core/code=NULLaro	 ioio " i">NULLnt">aoc#L2" idluL2" class="line1"0 namaluLL01">   1
/a>
spat class==0"co110nt">                =net/core/code=spin_unlock_bharo	 ioio " i">spin_unlock_bhnt">(&=net/core/code=s="_garbages"o	 ioio " i">s="_garbagent">.=net/core/code=locks"o	 ioio " i">locknt">)aoc#L2" idluL2" class="line11" namaluLLL1">   1
/a>
spat class==1"co=11nt">                goto  net/core/code=loops"o	 ioio " i">loopnt">aoc#L2" idluL2" class="line11" namalu11L2">   2
/a>
spat class11="co112nt">        }oc#L2" idluL2" class="line113 namalu1132">   2
/a>
spat class113"co113nt">        =net/core/code=	 its"o	 ioio " i">lastnt">-
spaonet/core/code=nusearo	 ioio " i">nusent"> = =net/core/code=NULLaro	 ioio " i">NULLnt">aoc#L2" idluL2" class="line1"4 namalu1142">   2
/a>
spat class114"co114nt">        =net/core/code=dst_busy_lists"o	 ioio " i">dst_busy_listnt"> = =net/core/code=io  aro	 ioio " i">heador">.=net/core/code=nusearo	 ioio " i">nusent">aoc#L2" idluL2" class="line115 namalu1152">   2
/a>
spat class115"co115nt">        if (!=net/core/code=dst_busy_lists"o	 ioio " i">dst_busy_listnt">)oc#L2" idluL2" class="line116 namalu1162">   2
/a>
spat class116"co116nt">                =net/core/code=s="_garbages"o	 ioio " i">s="_garbagent">.=net/core/code=timer_iefs"o	 ioio " i">timer_iefnt"> = =net/core/code=DST_GC_MAXs"o	 ioio " i">DST_GC_MAXnt">aoc#L2" idluL2" class="line117 namalu1172">   2
/a>
spat class117"co117nt">        else {.c#L2" idluL2" class="line118 namalu1182">   2
/a>
spat class118"co118nt">                =* net/core/dst.cio   /core/dst.c#L2" idluL2" class="line119 namalu1192">   2
/a>
spat class119"co119nt"> * net/core/dst.cio                    * if we f" ed less thnet1/10 of salayedPio ries,ore/dst.c#L2" idluL2" class="line120 namalu1201">   1
/a>
spat class120"co120nt"> * net/core/dst.cio                    * we cnetsleep longer/ore/dst.c#L2" idluL2" class="line12" namalu12L1">   1
/a>
spat class12="co12ent">/*
/spatio   2
/a>
spat class1=="co122nt">                if (=net/core/code=work_pers="heds"o	 ioio " i">work_pers="hednt"> <= =net/core/code=dalayeds"o	 ioio " i">salayednt">/10) {.c#L2" idluL2" class="line123 namalu1232">   2
/a>
spat class123"co123nt">                        =net/core/code=s="_garbages"o	 ioio " i">s="_garbagent">.=net/core/code=timer_expiress"o	 ioio " i">timer_expiresnt"> += =net/core/code=dst_garbages"o	 ioio " i">s="_garbagent">.=net/core/code=timer_iefs"o	 ioio " i">timer_iefnt">aoc#L2" idluL2" class="line124 namalu1242">   2
/a>
spat class124"co124nt">                        if (=net/core/code=s="_garbages"o	 ioio " i">s="_garbagent">.=net/core/code=timer_expiress"o	 ioio " i">timer_expiresnt"> 
spa =net/core/code=DST_GC_MAXs"o	 ioio " i">DST_GC_MAXnt">)oc#L2" idluL2" class="line125 namalu1252">   2
/a>
spat class125"co125nt">                                =net/core/code=s="_garbages"o	 ioio " i">s="_garbagent">.=net/core/code=timer_expiress"o	 ioio " i">timer_expiresnt"> = =net/core/code=DST_GC_MAXs"o	 ioio " i">DST_GC_MAXnt">aoc#L2" idluL2" class="line126 namalu1262">   2
/a>
spat class126"co126nt">                        =net/core/code=s="_garbages"o	 ioio " i">s="_garbagent">.=net/core/code=timer_iefs"o	 ioio " i">timer_iefnt"> += =net/core/code=DST_GC_INCs"o	 ioio " i">DST_GC_INCnt">aoc#L2" idluL2" class="line127 namalu1272">   2
/a>
spat class127"co127nt">                } else {.c#L2" idluL2" class="line1"8 namalu1282">   2
/a>
spat class128"co128nt">                        =net/core/code=s="_garbages"o	 ioio " i">s="_garbagent">.=net/core/code=timer_iefs"o	 ioio " i">timer_iefnt"> = =net/core/code=DST_GC_INCs"o	 ioio " i">DST_GC_INCnt">aoc#L2" idluL2" class="line129 namalu1292">   2
/a>
spat class129"co129nt">                        =net/core/code=s="_garbages"o	 ioio " i">s="_garbagent">.=net/core/code=timer_expiress"o	 ioio " i">timer_expiresnt"> = =net/core/code=DST_GC_MINs"o	 ioio " i">DST_GC_MINnt">aoc#L2" idluL2" class="line130 namalu1301">   1
/a>
spat class130"co130nt">                }oc#L2" idluL2" class="line13" namalu13L1">   1
/a>
spat class13="co131nt">                =net/core/code=expiress"o	 ioio " i">expiresnt"> = =net/core/code=s="_garbages"o	 ioio " i">s="_garbagent">.=net/core/code=timer_expiress"o	 ioio " i">timer_expiresnt">aoc#L2" idluL2" class="line13" namalu13L2">   2
/a>
spat class13="co132nt">                =* net/core/dst.cio   /core/dst.c#L2" idluL2" class="line133 namalu1332">   2
/a>
spat class133"co133nt"> * net/core/dst.cio                    * if the nuse valired timer is mcla thnet4 sedonds in theore/dst.c#L2" idluL2" class="line134 namalu1342">   2
/a>
spat class134"co134nt"> * net/core/dst.cio                    * futula then round the timer to whole sedondsore/dst.c#L2" idluL2" class="line135 namalu1352">   2
/a>
spat class135"co135nt"> * net/core/dst.cio                    */ore/dst.c#L2" idluL2" class="line136 namalu1362">   2
/a>
spat class136"co136nt">                if (=net/core/code=expiress"o	 ioio " i">expiresnt"> 
spa 4*=net/core/code=HZs"o	 ioio " i">HZnt">)oc#L2" idluL2" class="line137 namalu1372">   2
/a>
spat class137"co137nt">                        =net/core/code=expiress"o	 ioio " i">expiresnt"> = =net/core/code=round_jiffies_ralatives"o	 ioio " i">round_jiffies_ralativent">(=net/core/code=expiress"o	 ioio " i">expiresnt">)aoc#L2" idluL2" class="line138 namalu1382">   2
/a>
spat class138"co138nt">                =net/core/code=ichedule_salayed_works"o	 ioio " i">ichedule_salayed_worknt">(&=net/core/code=s="_gc_works"o	 ioio " i">s="_gc_worknt">, =net/core/code=expiress"o	 ioio " i">expiresnt">)aoc#L2" idluL2" class="line139 namalu1392">   2
/a>
spat class139"co139nt">        }oc#L2" idluL2" class="line140 namalu1401">   1
/a>
spat class140"co140divioc#L2" idluL2" class="line14" namalu14L1">   1
/a>
spat class14="co141nt">        =net/core/code=spin_unlock_bharo	 ioio " i">spin_unlock_bhnt">(&=net/core/code=s="_garbages"o	 ioio " i">s="_garbagent">.=net/core/code=locks"o	 ioio " i">locknt">)aoc#L2" idluL2" class="line14" namalu14L2">   2
/a>
spat class14="co142nt">        =net/core/code=mue"x_unlocks"o	 ioio " i">mue"x_unlocknt">(&=net/core/code=s="_gc_mue"xs"o	 ioio " i">s="_gc_mue"xnt">)aoc#L2" idluL2" class="line143 namalu1432">   2
/a>
spat class143"co143nt">}oc#L2" idluL2" class="line144 namalu1442">   2
/a>
spat class144"co144divioc#L2" idluL2" class="line145 namalu1452">   2
/a>
spat class145"co145nt">int =net/core/code=s="_discards"o	 ioio " i">s="_discardnt">(stru/f =net/core/code=sk_buffaro	 ioio " i">sk_buffnt"> *=net/core/code=skbaro	 ioio " i">skbnt">)oc#L2" idluL2" class="line146 namalu1462">   2
/a>
spat class146"co146nt">{.c#L2" idluL2" class="line147 namalu1472">   2
/a>
spat class147"co147nt">        =net/core/code=kf" e_skbaro	 ioio " i">kf" e_skbnt">(=net/core/code=skbaro	 ioio " i">skbnt">)aoc#L2" idluL2" class="line148 namalu1482">   2
/a>
spat class148"co148nt">        t typal0aoc#L2" idluL2" class="line149 namalu1492">   2
/a>
spat class149"co149nt">}oc#L2" idluL2" class="line150 namalu1501">   1
/a>
spat class150"co150nt">=net/core/code=EXPORT_SYMBOLaro	 ioio " i">EXPORT_SYMBOLnt">(=net/core/code=s="_discards"o	 ioio " i">s="_discardnt">)aoc#L2" idluL2" class="line15" namalu15L1">   1
/a>
spat class15="co15ent">oc#L2" idluL2" class="line15" namalu15L2">   2
/a>
spat class15="co152nt">donsf =net/core/code=u3L2">   2
/ " i">u32nt"> =net/core/code=s="_default_metricss"o	 ioio " i">s="_default_metricsnt">[=net/core/code=RTAX_MAXs"o	 ioio " i">RTAX_MAXnt"> + 1] = {.c#L2" idluL2" class="line153 namalu1532">   2
/a>
spat class153"co153nt">        =* net/core/dst.cio   /c This initializer is needed to force a>
ker to place ypal variableore/dst.c#L2" idluL2" class="line154 namalu1542">   2
/a>
spat class154"co154nt"> * net/core/dst.cio            * into donsf sedv3.1. Otherwise it m;">< end into bss sedv3.1.ore/dst.c#L2" idluL2" class="line155 namalu1552">   2
/a>
spat class155"co155nt"> * net/core/dst.cio             PWe really want to avoid uhidd shar   2
/a>
spat class156"co156nt"> * net/core/dst.cio            * any writes on i   2
/a>
spat class157"co157nt"> * net/core/dst.cio            */ore/dst.c#L2" idluL2" class="line158 namalu1582">   2
/a>
spat class158"co158nt">        [=net/core/code=RTAX_MAXs"o	 ioio " i">RTAX_MAXnt">] = 0xdeadbeef,.c#L2" idluL2" class="line159 namalu1592">   2
/a>
spat class159"co159nt">}aoc#L2" idluL2" class="line160 namalu1601">   1
/a>
spat class160"co160divioc#L2" idluL2" class="line16" namalu16L1">   1
/a>
spat class16="co16ent">oc#L2" idluL2" class="line16" namalu16L2">   2
/a>
spat class16="co162divivoid *=net/core/code=dst_allofs"o	 ioio " i">dst_allofnt">(stru/f =net/core/code=dst_opss"o	 ioio " i">s="_opsnt"> *=net/core/code=opss"o	 ioio " i">opsnt">, stru/f =net/core/code=uL2_devicearo	 ioio " i">nu2_devicent"> *=net/core/code=devs"o	 ioio " i">savnt">,oc#L2" idluL2" class="line163 namalu1632">   2
/a>
spat class163"co163nt">                int =net/core/code=initial_rofs"o	 ioio " i">initial_rofnt">, int =net/core/code=initial_obsoletes"o	 ioio " i">initial_obsoletent">, unsignad short =net/core/code=flagss"o	 ioio " i">flagsnt">)oc#L2" idluL2" class="line164 namalu1642">   2
/a>
spat class164"co164divi{.c#L2" idluL2" class="line165 namalu1652">   2
/a>
spat class165"co165nt">        stru/f =net/core/code=s="_io rys"o	 ioio " i">s="_io rynt"> *=net/core/code=dsts"o	 ioio " i">dstnt">aoc#L2" idluL2" class="line166 namalu1662">   2
/a>
spat class166"co166divioc#L2" idluL2" class="line167 namalu1672">   2
/a>
spat class167"co167nt">        if (=net/core/code=opss"o	 ioio " i">opsnt">-
spaonet/core/code=gfs"o	 ioio " i">gfnt"> && =net/core/code=s="_io ries_gu2_f its"o	 ioio " i">s="_io ries_gu2_f itnt">(=net/core/code=opss"o	 ioio " i">opsnt">) 
spa =net/core/code=opss"o	 ioio " i">opsnt">-
spaonet/core/code=gf_thresharo	 ioio " i">gf_threshnt">) {.c#L2" idluL2" class="line168 namalu1682">   2
/a>
spat class168"co168nt">                if (=net/core/code=opss"o	 ioio " i">opsnt">-
spaonet/core/code=gfs"o	 ioio " i">gfnt">(=net/core/code=opss"o	 ioio " i">opsnt">))oc#L2" idluL2" class="line169 namalu1692">   2
/a>
spat class169"co169nt">                        t typal=net/core/code=NULLaro	 ioio " i">NULLnt">aoc#L2" idluL2" class="line170 namalu1701">   1
/a>
spat class170"co170nt">        }oc#L2" idluL2" class="line17" namalu17L1">   1
/a>
spat class17="co171nt">        =net/core/code=dsts"o	 ioio " i">dstnt"> = =net/core/code=kmem_2 che_allofs"o	 ioio " i">kmem_2 che_allofnt">(=net/core/code=opss"o	 ioio " i">opsnt">-
spaonet/core/code=kmem_2 cheps"o	 ioio " i">kmem_2 chepnt">, =net/core/code=GFP_ATOMICs"o	 ioio " i">GFP_ATOMICnt">)aoc#L2" idluL2" class="line17" namalu17L2">   2
/a>
spat class17="co172nt">        if (!=net/core/code=dsts"o	 ioio " i">dstnt">)oc#L2" idluL2" class="line173 namalu1732">   2
/a>
spat class173"co173nt">                t typal=net/core/code=NULLaro	 ioio " i">NULLnt">aoc#L2" idluL2" class="line174 namalu1742">   2
/a>
spat class174"co174nt">        =net/core/code=dsts"o	 ioio " i">dstnt">-
spaonet/core/code=childaro	 ioio " i">dhildnt"> = =net/core/code=NULLaro	 ioio " i">NULLnt">aoc#L2" idluL2" class="line175 namalu1752">   2
/a>
spat class175"co175nt">        =net/core/code=dsts"o	 ioio " i">dstnt">-
spaonet/core/code=devs"o	 ioio " i">savnt"> = =net/core/code=sevs"o	 ioio " i">savnt">aoc#L2" idluL2" class="line176 namalu1762">   2
/a>
spat class176"co176nt">        if (=net/core/code=sevs"o	 ioio " i">savnt">)oc#L2" idluL2" class="line177 namalu1772">   2
/a>
spat class177"co177nt">                =net/core/code=dev_holdaro	 ioio " i">dev_holdnt">(=net/core/code=sevs"o	 ioio " i">savnt">)aoc#L2" idluL2" class="line178 namalu1782">   2
/a>
spat class178"co178nt">        =net/core/code=dsts"o	 ioio " i">dstnt">-
spaonet/core/code=opss"o	 ioio " i">opsnt"> = =net/core/code=opss"o	 ioio " i">opsnt">aoc#L2" idluL2" class="line179 namalu1792">   2
/a>
spat class179"co179nt">        =net/core/code=s="_init_metricss"o	 ioio " i">s="_init_metricsnt">(=net/core/code=s="s"o	 ioio " i">dstnt">, =net/core/code=s="_default_metricss"o	 ioio " i">s="_default_metricsnt">, =net/core/code=trues"o	 ioio " i">truent">)aoc#L2" idluL2" class="line180 namalu1801">   1
/a>
spat class180"co180nt">        =net/core/code=dsts"o	 ioio " i">dstnt">-
spaonet/core/code=expiress"o	 ioio " i">expiresnt"> = 0ULaoc#L2" idluL2" class="line18" namalu18L1">   1
/a>
spat class18="co181nt">        =net/core/code=dsts"o	 ioio " i">dstnt">-
spaonet/core/code=patharo	 ioio " i">	athnt"> = =net/core/code=s="s"o	 ioio " i">dstnt">aoc#L2" idluL2" class="line18" namalu18L2">   2
/a>
spat class18="co182  vi#ifdef =net/core/code=CONFIG_XFRMs"o	 ioio " i">CONFIG_XFRMdivioc#L2" idluL2" class="line183 namalu1832">   2
/a>
spat class183"co183nt">        =net/core/code=dsts"o	 ioio " i">dstnt">-
spaonet/core/code=xfrms"o	 ioio " i">xfrmnt"> = =net/core/code=NULLaro	 ioio " i">NULLnt">aoc#L2" idluL2" class="line184 namalu1842">   2
/a>
spat class184"co184nt">#endifoc#L2" idluL2" class="line185 namalu1852">   2
/a>
spat class185"co185nt">        =net/core/code=dsts"o	 ioio " i">dstnt">-
spaonet/core/code=maluas"o	 ioio " i">inputnt"> = =net/core/code=s="_discards"o	 ioio " i">s="_discardnt">aoc#L2" idluL2" class="line186 namalu1862">   2
/a>
spat class186"co186nt">        =net/core/code=dsts"o	 ioio " i">dstnt">-
spaonet/core/code=outluas"o	 ioio " i">outluant"> = =net/core/code=s="_discards"o	 ioio " i">s="_discardnt">aoc#L2" idluL2" class="line187 namalu1872">   2
/a>
spat class187"co187nt">        =net/core/code=dsts"o	 ioio " i">dstnt">-
spaonet/core/code=errors"o	 ioio " i">errornt"> = 0aoc#L2" idluL2" class="line188 namalu1882">   2
/a>
spat class188"co188nt">        =net/core/code=dsts"o	 ioio " i">dstnt">-
spaonet/core/code=obsoletes"o	 ioio " i">obsoletent"> = =net/core/code=initial_obsoletes"o	 ioio " i">initial_obsoletent">aoc#L2" idluL2" class="line189 namalu1892">   2
/a>
spat class189"co189nt">        =net/core/code=s="s"o	 ioio " i">dstnt">-
spaonet/core/code=header_l idlo	 ioio " i">header_l int"> = 0aoc#L2" idluL2" class="line190 namalu1901">   1
/a>
spat class190"co190nt">        =net/core/code=dsts"o	 ioio " i">dstnt">-
spaonet/core/code=trailer_l idlo	 ioio " i">trailer_l int"> = 0aoc#L2" idluL2" class="line19" namalu19L1">   1
/a>
spat class19="co191  vi#ifdef =net/core/code=CONFIG_IP_ROUTE_CLASSIDs"o	 ioio " i">CONFIG_IP_ROUTE_CLASSIDdivioc#L2" idluL2" class="line19" namalu19L2">   2
/a>
spat class19="co192nt">        =net/core/code=dsts"o	 ioio " i">dstnt">-
spaonet/core/code=to	 ioids"o	 ioio " i">to	 ioidnt"> = 0aoc#L2" idluL2" class="line193 namalu1932">   2
/a>
spat class193"co193nt">#endifoc#L2" idluL2" class="line194 namalu1942">   2
/a>
spat class194"co194nt">        =net/core/code=atomic_sets"o	 ioio " i">atomic_setnt">(&=net/core/code=s="s"o	 ioio " i">dstnt">-
spaonet/core/code=__rofcn"s"o	 ioio " i">__rofcn"nt">, =net/core/code=initial_rofs"o	 ioio " i">initial_rofnt">)aoc#L2" idluL2" class="line195 namalu1952">   2
/a>
spat class195"co195nt">        =net/core/code=dsts"o	 ioio " i">dstnt">-
spaonet/core/code=__uses"o	 ioio " i">__usent"> = 0aoc#L2" idluL2" class="line196 namalu1962">   2
/a>
spat class196"co196nt">        =net/core/code=dsts"o	 ioio " i">dstnt">-
spaonet/core/code=	 ituses"o	 ioio " i">	 itusent"> = =net/core/code=jiffiess"o	 ioio " i">jiffiesnt">aoc#L2" idluL2" class="line197 namalu1972">   2
/a>
spat class197"co197nt">        =net/core/code=dsts"o	 ioio " i">dstnt">-
spaonet/core/code=flagss"o	 ioio " i">flagsnt"> = =net/core/code=flagss"o	 ioio " i">flagsnt">aoc#L2" idluL2" class="line198 namalu1982">   2
/a>
spat class198"co198nt">        =net/core/code=dsts"o	 ioio " i">dstnt">-
spaonet/core/code=c<0ping_confirms"o	 ioio " i">c<0ping_confirmnt"> = 0aoc#L2" idluL2" class="line199 namalu1992">   2
/a>
spat class199"co199nt">        =net/core/code=s="s"o	 ioio " i">dstnt">-
spaonet/core/code=nusearo	 ioio " i">nusent"> = =net/core/code=NULLaro	 ioio " i">NULLnt">aoc#L2" idluL2" class="line200 namalu2001">   1
/a>
spat class200"co200nt">        if (!(=net/core/code=flagss"o	 ioio " i">flagsnt"> & =net/core/code=DST_NOCOUNTs"o	 ioio " i">DST_NOCOUNTnt">))oc#L2" idluL2" class="line20" namalu20L1">   1
/a>
spat class201"co201nt">                =net/core/code=s="_io ries_adds"o	 ioio " i">s="_io ries_addnt">(=net/core/code=opss"o	 ioio " i">opsnt">, 1)aoc#L2" idluL2" class="line20" namalu20L2">   2
/a>
spat class202"co202nt">        t typal=net/core/code=s="s"o	 ioio " i">dstnt">aoc#L2" idluL2" class="line203 namalu2032">   2
/a>
spat class203"co203nt">}oc#L2" idluL2" class="line204 namalu2042">   2
/a>
spat class204"co204nt"> net/core/code=EXPORT_SYMBOLaro	 ioio " i">EXPORT_SYMBOLnt">(=net/core/code=s="_allofs"o	 ioio " i">dst_allofnt">)aoc#L2" idluL2" class="line205 namalu2052">   2
/a>
spat class205"co205divioc#L2" idluL2" class="line206 namalu2062">   2
/a>
spat class206"co206nt">alt="& void =net/core/code=___s="_f" es"o	 ioio " i">___s="_f" ent">(stru/f =net/core/code=s="_io rys"o	 ioio " i">s="_io rynt"> *=net/core/code=dsts"o	 ioio " i">dstnt">)oc#L2" idluL2" class="line207 namalu2072">   2
/a>
spat class207"co207nt">{.c#L2" idluL2" class="line208 namalu2082">   2
/a>
spat class208"co208nt">        =* net/core/dst.cio   /c ThePfirst case (dev==NULL) is tequired, whenore/dst.c#L2" idluL2" class="line"09 namalu2092">   2
/a>
spat class209"co209nt"> * net/core/dst.cio              p3"vocol module is unloaded.ore/dst.c#L2" idluL2" class="line2"0 namalu2L01">   1
/a>
spat class2=0"co210nt"> * net/core/dst.cio            */ore/dst.c#L2" idluL2" class="line21" namalu2LL1">   1
/a>
spat class2=1"co211nt">        if (=net/core/code=s="s"o	 ioio " i">dstnt">-
spaonet/core/code=devs"o	 ioio " i">savnt"> == =net/core/code=NULLaro	 ioio " i">NULLnt"> || !(=net/core/code=s="s"o	 ioio " i">dstnt">-
spaonet/core/code=devs"o	 ioio " i">savnt">-
spaonet/core/code=flagss"o	 ioio " i">flagsnt">&=net/core/code=IFF_UPs"o	 ioio " i">IFF_UPnt">))oc#L2" idluL2" class="line21" namalu21L2">   2
/a>
spat class21="co212nt">                =net/core/code=dsts"o	 ioio " i">dstnt">-
spaonet/core/code=maluas"o	 ioio " i">inputnt"> = =net/core/code=s="s"o	 ioio " i">dstnt">-
spaonet/core/code=outluas"o	 ioio " i">outluant"> = =net/core/code=s="_discards"o	 ioio " i">s="_discardnt">aoc#L2" idluL2" class="line213 namalu2132">   2
/a>
spat class213"co213nt">        =net/core/code=dsts"o	 ioio " i">dstnt">-
spaonet/core/code=obsoletes"o	 ioio " i">obsoletent"> = =net/core/code=DST_OBSOLETE_DEADs"o	 ioio " i">DST_OBSOLETE_DEADnt">aoc#L2" idluL2" class="line214 namalu2142">   2
/a>
spat class214"co214nt">}oc#L2" idluL2" class="line215 namalu2152">   2
/a>
spat class215"co215divioc#L2" idluL2" class="line216 namalu2162">   2
/a>
spat class216"co216nt">void =net/core/code=__s="_f" es"o	 ioio " i">__s="_f" ent">(stru/f =net/core/code=s="_io rys"o	 ioio " i">s="_io rynt"> *=net/core/code=dsts"o	 ioio " i">dstnt">)oc#L2" idluL2" class="line217 namalu2172">   2
/a>
spat class217"co217nt">{.c#L2" idluL2" class="line218 namalu2182">   2
/a>
spat class218"co218nt">        =net/core/code=spin_lock_bharo	 ioio " i">spin_lock_bhnt">(&=net/core/code=s="_garbages"o	 ioio " i">s="_garbagent">.=net/core/code=locks"o	 ioio " i">locknt">)aoc#L2" idluL2" class="line219 namalu2192">   2
/a>
spat class219"co219nt">        =net/core/code=___s="_f" es"o	 ioio " i">___s="_f" ent">(=net/core/code=s="s"o	 ioio " i">dstnt">)aoc#L2" idluL2" class="line220 namalu2201">   1
/a>
spat class220"co220nt">        =net/core/code=dsts"o	 ioio " i">dstnt">-
spaonet/core/code=nusearo	 ioio " i">nusent"> = =net/core/code=dst_garbages"o	 ioio " i">s="_garbagent">.=net/core/code=lists"o	 ioio " i">listnt">aoc#L2" idluL2" class="line22" namalu22L1">   1
/a>
spat class22="co221nt">        =net/core/code=dst_garbages"o	 ioio " i">s="_garbagent">.=net/core/code=lists"o	 ioio " i">listnt"> = =net/core/code=s="s"o	 ioio " i">dstnt">aoc#L2" idluL2" class="line22" namalu2LL2">   2
/a>
spat class2=="co222nt">        if (=net/core/code=dst_garbages"o	 ioio " i">s="_garbagent">.=net/core/code=timer_iefs"o	 ioio " i">timer_iefnt"> 
spa =net/core/code=DST_GC_INCs"o	 ioio " i">DST_GC_INCnt">) {.c#L2" idluL2" class="line223 namalu2232">   2
/a>
spat class223"co223nt">                =net/core/code=dst_garbages"o	 ioio " i">s="_garbagent">.=net/core/code=timer_iefs"o	 ioio " i">timer_iefnt"> = =net/core/code=DST_GC_INCs"o	 ioio " i">DST_GC_INCnt">aoc#L2" idluL2" class="line224 namalu2242">   2
/a>
spat class224"co224nt">                =net/core/code=dst_garbages"o	 ioio " i">s="_garbagent">.=net/core/code=timer_expiress"o	 ioio " i">timer_expiresnt"> = =net/core/code=DST_GC_MINs"o	 ioio " i">DST_GC_MINnt">aoc#L2" idluL2" class="line225 namalu2252">   2
/a>
spat class225"co225nt">                =net/core/code=mod_salayed_works"o	 ioio " i">mod_salayed_worknt">(=net/core/code=system_wqaro	 ioio " i">system_wqnt">, &=net/core/code=s="_gc_works"o	 ioio " i">s="_gc_worknt">,oc#L2" idluL2" class="line226 namalu2262">   2
/a>
spat class226"co226nt">                                 =net/core/code=dst_garbages"o	 ioio " i">s="_garbagent">.=net/core/code=timer_expiress"o	 ioio " i">timer_expiresnt">)aoc#L2" idluL2" class="line227 namalu2272">   2
/a>
spat class227"co227nt">        }oc#L2" idluL2" class="line2"8 namalu2282">   2
/a>
spat class228"co228nt">        =net/core/code=spin_unlock_bharo	 ioio " i">spin_unlock_bhnt">(&=net/core/code=s="_garbages"o	 ioio " i">s="_garbagent">.=net/core/code=locks"o	 ioio " i">locknt">)aoc#L2" idluL2" class="line229 namalu2292">   2
/a>
spat class229"co229nt">}oc#L2" idluL2" class="line230 namalu2301">   1
/a>
spat class230"co230nt">=net/core/code=EXPORT_SYMBOLaro	 ioio " i">EXPORT_SYMBOLnt">(=net/core/code=__s="_f" es"o	 ioio " i">__s="_f" ent">)aoc#L2" idluL2" class="line23" namalu23L1">   1
/a>
spat class23="co23ent">oc#L2" idluL2" class="line23" namalu23L2">   2
/a>
spat class23="co232nt">alru/f =net/core/code=s="_io rys"o	 ioio " i">s="_io rynt"> *=net/core/code=dst_destroys"o	 ioio " i">s="_destroynt">(alru/f =net/core/code=s="_io rys"o	 ioio " i">s="_io rynt"> * =net/core/code=s="s"o	 ioio " i">dstnt">)oc#L2" idluL2" class="line233 namalu2332">   2
/a>
spat class233"co233nt">{.c#L2" idluL2" class="line234 namalu2342">   2
/a>
spat class234"co234nt">        alru/f =net/core/code=s="_io rys"o	 ioio " i">s="_io rynt"> *=net/core/code=childaro	 ioio " i">dhildnt">aoc#L2" idluL2" class="line235 namalu2352">   2
/a>
spat class235"co235divioc#L2" idluL2" class="line236 namalu2362">   2
/a>
spat class236"co236nt">        =net/core/code=smp_rmbaro	 ioio " i">smp_rmbnt">()aoc#L2" idluL2" class="line237 namalu2372">   2
/a>
spat class237"co237nt">oc#L2" idluL2" class="line238 namalu2382">   2
/a>
spat class238"co238nt">=net/core/code=agaiidlo	 ioio " i">agaiint">:oc#L2" idluL2" class="line239 namalu2392">   2
/a>
spat class239"co239nt">        =net/core/code=childaro	 ioio " i">dhildnt"> = =net/core/code=dsts"o	 ioio " i">dstnt">-
spaonet/core/code=childaro	 ioio " i">dhildnt">aoc#L2" idluL2" class="line240 namalu2401">   1
/a>
spat class240"co240divioc#L2" idluL2" class="line24" namalu24L1">   1
/a>
spat class24="co241nt">        if (!(=net/core/code=s="s"o	 ioio " i">dstnt">-
spaonet/core/code=flagss"o	 ioio " i">flagsnt"> & =net/core/code=DST_NOCOUNTs"o	 ioio " i">DST_NOCOUNTnt">))oc#L2" idluL2" class="line24" namalu24L2">   2
/a>
spat class24="co242nt">                =net/core/code=dst_io ries_adds"o	 ioio " i">s="_io ries_addnt">(=net/core/code=dsts"o	 ioio " i">dstnt">-
spaonet/core/code=opss"o	 ioio " i">opsnt">, -1)aoc#L2" idluL2" class="line243 namalu2432">   2
/a>
spat class243"co243divioc#L2" idluL2" class="line244 namalu2442">   2
/a>
spat class244"co244nt">        if (=net/core/code=dsts"o	 ioio " i">dstnt">-
spaonet/core/code=opss"o	 ioio " i">opsnt">-
spaonet/core/code=destroys"o	 ioio " i">sestroynt">)oc#L2" idluL2" class="line245 namalu2452">   2
/a>
spat class245"co245nt">                =net/core/code=dsts"o	 ioio " i">dstnt">-
spaonet/core/code=opss"o	 ioio " i">opsnt">-
spaonet/core/code=destroys"o	 ioio " i">sestroynt">(=net/core/code=s="s"o	 ioio " i">dstnt">)aoc#L2" idluL2" class="line246 namalu2462">   2
/a>
spat class246"co246nt">        if (=net/core/code=s="s"o	 ioio " i">dstnt">-
spaonet/core/code=devs"o	 ioio " i">savnt">)oc#L2" idluL2" class="line247 namalu2472">   2
/a>
spat class247"co247nt">                =net/core/code=dev_luas"o	 ioio " i">dev_luant">(=net/core/code=dsts"o	 ioio " i">dstnt">-
spaonet/core/code=sevs"o	 ioio " i">savnt">)aoc#L2" idluL2" class="line248 namalu2482">   2
/a>
spat class248"co248nt">        =net/core/code=kmem_2 che_f" es"o	 ioio " i">kmem_2 che_f" ent">(=net/core/code=dsts"o	 ioio " i">dstnt">-
spaonet/core/code=opss"o	 ioio " i">opsnt">-
spaonet/core/code=kmem_2 cheps"o	 ioio " i">kmem_2 chepnt">, =net/core/code=s="s"o	 ioio " i">dstnt">)aoc#L2" idluL2" class="line249 namalu2492">   2
/a>
spat class249"co249divioc#L2" idluL2" class="line250 namalu2501">   1
/a>
spat class250"co250nt">        =net/core/code=dsts"o	 ioio " i">dstnt"> = =net/core/code=childaro	 ioio " i">dhildnt">aoc#L2" idluL2" class="line25" namalu25L1">   1
/a>
spat class25="co251nt">        if (=net/core/code=s="s"o	 ioio " i">dstnt">) {.c#L2" idluL2" class="line25" namalu25L2">   2
/a>
spat class25="co252nt">                int =net/core/code=nohasharo	 ioio " i">nohashnt"> = =net/core/code=dsts"o	 ioio " i">dstnt">-
spaonet/core/code=flagss"o	 ioio " i">flagsnt"> & =net/core/code=DST_NOHASHs"o	 ioio " i">DST_NOHASHnt">aoc#L2" idluL2" class="line253 namalu2532">   2
/a>
spat class253"co253divioc#L2" idluL2" class="line254 namalu2542">   2
/a>
spat class254"co254nt">                if (=net/core/code=atomic_dec_and_tests"o	 ioio " i">atomic_dec_and_testnt">(&=net/core/code=s="s"o	 ioio " i">dstnt">-
spaonet/core/code=__rofcn"s"o	 ioio " i">__rofcn"nt">)) {.c#L2" idluL2" class="line255 namalu2552">   2
/a>
spat class255"co255nt">                        =* net/core/dst.cio   /c We were real par="n of ypal dst, so kill dhild. */ore/dst.c#L2" idluL2" class="line256 namalu2562">   2
/a>
spat class256"co256nt">                        if (=net/core/code=nohasharo	 ioio " i">nohashnt">)oc#L2" idluL2" class="line257 namalu2572">   2
/a>
spat class257"co257nt">                                goto  net/core/code=agaiidlo	 ioio " i">agaiint">aoc#L2" idluL2" class="line258 namalu2582">   2
/a>
spat class258"co258nt">                } else {.c#L2" idluL2" class="line259 namalu2592">   2
/a>
spat class259"co259nt">                        =* net/core/dst.cio   /c Child is still   
erenced, t typalit for f" eing. */ore/dst.c#L2" idluL2" class="line260 namalu2601">   1
/a>
spat class260"co260nt">                        if (=net/core/code=nohasharo	 ioio " i">nohashnt">)oc#L2" idluL2" class="line26" namalu26L1">   1
/a>
spat class26="co261nt">                                t typal=net/core/code=s="s"o	 ioio " i">dstnt">aoc#L2" idluL2" class="line26" namalu26L2">   2
/a>
spat class26="co262nt">                        =* net/core/dst.cio   /c Child is still in pal hash table */ore/dst.c#L2" idluL2" class="line263 namalu2632">   2
/a>
spat class263"co263nt">                }oc#L2" idluL2" class="line264 namalu2642">   2
/a>
spat class264"co264nt">        }oc#L2" idluL2" class="line265 namalu2652">   2
/a>
spat class265"co265nt">        t typal=net/core/code=NULLaro	 ioio " i">NULLnt">aoc#L2" idluL2" class="line266 namalu2662">   2
/a>
spat class266"co266divi}oc#L2" idluL2" class="line267 namalu2672">   2
/a>
spat class267"co267nt">=net/core/code=EXPORT_SYMBOLaro	 ioio " i">EXPORT_SYMBOLnt">(=net/core/code=dst_destroys"o	 ioio " i">s="_destroynt">)aoc#L2" idluL2" class="line268 namalu2682">   2
/a>
spat class268"co268nt">oc#L2" idluL2" class="line269 namalu2692">   2
/a>
spat class269"co269nt">void =net/core/code=s="_releases"o	 ioio " i">s="_releasent">(alru/f =net/core/code=s="_io rys"o	 ioio " i">s="_io rynt"> *=net/core/code=s="s"o	 ioio " i">dstnt">)oc#L2" idluL2" class="line270 namalu2701">   1
/a>
spat class270"co270nt">{.c#L2" idluL2" class="line27" namalu27L1">   1
/a>
spat class27="co271nt">        if (=net/core/code=s="s"o	 ioio " i">dstnt">) {.c#L2" idluL2" class="line27" namalu27L2">   2
/a>
spat class27="co272nt">                int =net/core/code=newrofcn"s"o	 ioio " i">newrofcn"nt">aoc#L2" idluL2" class="line273 namalu2732">   2
/a>
spat class273"co273divioc#L2" idluL2" class="line274 namalu2742">   2
/a>
spat class274"co274nt">                =net/core/code=newrofcn"s"o	 ioio " i">newrofcn"nt"> = =net/core/code=atomic_dec_t typas"o	 ioio " i">atomic_dec_t typant">(&=net/core/code=s="s"o	 ioio " i">dstnt">-
spaonet/core/code=__rofcn"s"o	 ioio " i">__rofcn"nt">)aoc#L2" idluL2" class="line275 namalu2752">   2
/a>
spat class275"co275nt">                =net/core/code=WARN_ONs"o	 ioio " i">WARN_ONnt">(=net/core/code=newrofcn"s"o	 ioio " i">newrofcn"nt"> < 0)aoc#L2" idluL2" class="line276 namalu2762">   2
/a>
spat class276"co276nt">                if (=net/core/code=unlikelys"o	 ioio " i">unlikelynt">(=net/core/code=dsts"o	 ioio " i">dstnt">-
spaonet/core/code=flagss"o	 ioio " i">flagsnt"> & =net/core/code=DST_NOCACHEs"o	 ioio " i">DST_NOCACHEnt">) && !=net/core/code=newrofcn"s"o	 ioio " i">newrofcn"nt">) {.c#L2" idluL2" class="line277 namalu2772">   2
/a>
spat class277"co277nt">                        =net/core/code=dsts"o	 ioio " i">dstnt"> = =net/core/code=dst_destroys"o	 ioio " i">s="_destroynt">(=net/core/code=s="s"o	 ioio " i">dstnt">)aoc#L2" idluL2" class="line278 namalu2782">   2
/a>
spat class278"co278nt">                        if (=net/core/code=s="s"o	 ioio " i">dstnt">)oc#L2" idluL2" class="line279 namalu2792">   2
/a>
spat class279"co279nt">                                =net/core/code=__s="_f" es"o	 ioio " i">__s="_f" ent">(=net/core/code=s="s"o	 ioio " i">dstnt">)aoc#L2" idluL2" class="line280 namalu2801">   1
/a>
spat class280"co280nt">                }oc#L2" idluL2" class="line28" namalu28L1">   1
/a>
spat class28="co281nt">        }oc#L2" idluL2" class="line28" namalu28L2">   2
/a>
spat class28="co282  vi}oc#L2" idluL2" class="line283 namalu2832">   2
/a>
spat class283"co283nt">=net/core/code=EXPORT_SYMBOLaro	 ioio " i">EXPORT_SYMBOLnt">(=net/core/code=dst_releases"o	 ioio " i">s="_releasent">)aoc#L2" idluL2" class="line284 namalu2842">   2
/a>
spat class284"co284divioc#L2" idluL2" class="line285 namalu2852">   2
/a>
spat class285"co285nt">=net/core/code=u3L2">   2
/ " i">u32nt"> *=net/core/code=dst_cow_metrics_generics"o	 ioio " i">s="_cow_metrics_genericnt">(alru/f =net/core/code=s="_io rys"o	 ioio " i">s="_io rynt"> *=net/core/code=s="s"o	 ioio " i">dstnt">, unsignad long =net/core/code=oldaro	 ioio " i">oldnt">)oc#L2" idluL2" class="line286 namalu2862">   2
/a>
spat class286"co286nt">{.c#L2" idluL2" class="line287 namalu2872">   2
/a>
spat class287"co287nt">        =net/core/code=u3L2">   2
/ " i">u32nt"> *=net/core/code=ps"o	 ioio " i">pnt"> = =net/core/code=kmallofs"o	 ioio " i">kmallofnt">(sizeof(=net/core/code=u3L2">   2
/ " i">u32nt">) * =net/core/code=RTAX_MAXs"o	 ioio " i">RTAX_MAXnt">, =net/core/code=GFP_ATOMICs"o	 ioio " i">GFP_ATOMICnt">)aoc#L2" idluL2" class="line288 namalu2882">   2
/a>
spat class288"co288nt">oc#L2" idluL2" class="line289 namalu2892">   2
/a>
spat class289"co289nt">        if (=net/core/code=ps"o	 ioio " i">pnt">) {.c#L2" idluL2" class="line290 namalu2901">   1
/a>
spat class290"co290nt">                =net/core/code=u3L2">   2
/ " i">u32nt"> *=net/core/code=old_ps"o	 ioio " i">old_pnt"> = =net/core/code=__DST_METRICS_PTRs"o	 ioio " i">__DST_METRICS_PTRnt">(=net/core/code=oldaro	 ioio " i">oldnt">)aoc#L2" idluL2" class="line29" namalu29L1">   1
/a>
spat class29="co291nt">                unsignad long =net/core/code=prevs"o	 ioio " i">prevnt">, =net/core/code=news"o	 ioio " i">newnt">aoc#L2" idluL2" class="line29" namalu29L2">   2
/a>
spat class29="co292nt">oc#L2" idluL2" class="line293 namalu2932">   2
/a>
spat class293"co293nt">                =net/core/code=memcpys"o	 ioio " i">memcpynt">(=net/core/code=ps"o	 ioio " i">pnt">, =net/core/code=old_ps"o	 ioio " i">old_pnt">, sizeof(=net/core/code=u3L2">   2
/ " i">u32nt">) * =net/core/code=RTAX_MAXs"o	 ioio " i">RTAX_MAXnt">)aoc#L2" idluL2" class="line294 namalu2942">   2
/a>
spat class294"co294divioc#L2" idluL2" class="line295 namalu2952">   2
/a>
spat class295"co295nt">                =net/core/code=news"o	 ioio " i">newnt"> = (unsignad long) =net/core/code=ps"o	 ioio " i">pnt">aoc#L2" idluL2" class="line296 namalu2962">   2
/a>
spat class296"co296nt">                =net/core/code=prevs"o	 ioio " i">prevnt"> = =net/core/code=cmpxchgaro	 ioio " i">dmpxchgnt">(&=net/core/code=s="s"o	 ioio " i">dstnt">-
spaonet/core/code=_metricss"o	 ioio " i">_metricsnt">, =net/core/code=oldaro	 ioio " i">oldnt">, =net/core/code=news"o	 ioio " i">newnt">)aoc#L2" idluL2" class="line297 namalu2972">   2
/a>
spat class297"co297nt">oc#L2" idluL2" class="line298 namalu2982">   2
/a>
spat class298"co298nt">                if (=net/core/code=prevs"o	 ioio " i">prevnt"> != =net/core/code=oldaro	 ioio " i">oldnt">) {.c#L2" idluL2" class="line299 namalu2992">   2
/a>
spat class299"co299nt">                        =net/core/code=kf" es"o	 ioio " i">kf" ent">(=net/core/code=ps"o	 ioio " i">pnt">)aoc#L2" idluL2" class="line300 namalu3001">   1
/a>
spat class300"co300nt">                        =net/core/code=ps"o	 ioio " i">pnt"> = =net/core/code=__DST_METRICS_PTRs"o	 ioio " i">__DST_METRICS_PTRnt">(=net/core/code=prevs"o	 ioio " i">prevnt">)aoc#L2" idluL2" class="line301 namalu30L1">   1
/a>
spat class301"co301nt">                        if (=net/core/code=prevs"o	 ioio " i">prevnt"> & =net/core/code=DST_METRICS_READ_ONLYs"o	 ioio " i">DST_METRICS_READ_ONLYnt">)oc#L2" idluL2" class="line30" namalu30L2">   2
/a>
spat class302"co302nt">                                =net/core/code=ps"o	 ioio " i">pnt"> = =net/core/code=NULLaro	 ioio " i">NULLnt">aoc#L2" idluL2" class="line303 namalu3032">   2
/a>
spat class303"co303nt">                }oc#L2" idluL2" class="line304 namalu3042">   2
/a>
spat class304"co304nt">        }oc#L2" idluL2" class="line305 namalu3052">   2
/a>
spat class305"co305nt">        t typal=net/core/code=ps"o	 ioio " i">pnt">aoc#L2" idluL2" class="line306 namalu3062">   2
/a>
spat class306"co306divi}oc#L2" idluL2" class="line307 namalu3072">   2
/a>
spat class307"co307nt">=net/core/code=EXPORT_SYMBOLaro	 ioio " i">EXPORT_SYMBOLnt">(=net/core/code=dst_cow_metrics_generics"o	 ioio " i">s="_cow_metrics_genericnt">)aoc#L2" idluL2" class="line308 namalu3082">   2
/a>
spat class308"co308nt">oc#L2" idluL2" class="line309 namalu3092">   2
/a>
spat class309"co309nt"> * net/core/dst.cio   /c Caller oreerts thnt dst_metrics_read_only(dst) is uhidd.  */ore/dst.c#L2" idluL2" class="line3"0 namalu3L01">   1
/a>
spat class3=0"co310nt">void =net/core/code=__s="_destroy_metrics_generics"o	 ioio " i">__s="_destroy_metrics_genericnt">(alru/f =net/core/code=s="_io rys"o	 ioio " i">s="_io rynt"> *=net/core/code=s="s"o	 ioio " i">dstnt">, unsignad long =net/core/code=oldaro	 ioio " i">oldnt">)oc#L2" idluL2" class="line31" namalu3LL1">   1
/a>
spat class3=1"co311nt">{.c#L2" idluL2" class="line31" namalu31L2">   2
/a>
spat class31="co312nt">        unsignad long =net/core/code=prevs"o	 ioio " i">prevnt">, =net/core/code=news"o	 ioio " i">newnt">aoc#L2" idluL2" class="line313 namalu3132">   2
/a>
spat class313"co313divioc#L2" idluL2" class="line314 namalu3142">   2
/a>
spat class314"co314nt">        =net/core/code=news"o	 ioio " i">newnt"> = ((unsignad long) =net/core/code=d="_default_metricss"o	 ioio " i">s="_default_metricsnt">) | =net/core/code=DST_METRICS_READ_ONLYs"o	 ioio " i">DST_METRICS_READ_ONLYnt">aoc#L2" idluL2" class="line315 namalu3152">   2
/a>
spat class315"co315nt">        =net/core/code=prevs"o	 ioio " i">prevnt"> = =net/core/code=cmpxchgaro	 ioio " i">dmpxchgnt">(&=net/core/code=s="s"o	 ioio " i">dstnt">-
spaonet/core/code=_metricss"o	 ioio " i">_metricsnt">, =net/core/code=oldaro	 ioio " i">oldnt">, =net/core/code=news"o	 ioio " i">newnt">)aoc#L2" idluL2" class="line316 namalu3162">   2
/a>
spat class316"co316nt">        if (=net/core/code=prevs"o	 ioio " i">prevnt"> == =net/core/code=oldaro	 ioio " i">oldnt">)oc#L2" idluL2" class="line317 namalu3172">   2
/a>
spat class317"co317nt">                =net/core/code=kf" es"o	 ioio " i">kf" ent">(=net/core/code=__DST_METRICS_PTRs"o	 ioio " i">__DST_METRICS_PTRnt">(=net/core/code=oldaro	 ioio " i">oldnt">))aoc#L2" idluL2" class="line318 namalu3e=__s="_f" es"o	 ioio " 318"co318nt"> "> == =lu3garbages"o	 ioio " i">s="_garbagent">2">   2
/a>
spat class207"c37t">                        if (=net/corebages"o	 ioio " i">s="_garbagent">2""o312nt">        unsignad long =net/core/code=prevs"o	 ioiol    p8rcore/code=__DST3/co43=pr0class="line240 namalu2401">   1
/a>
3o	 ioio "3i">listnt">aoc#L2" idluL3" cla3s="line309 namalu3092">   2
/a*rts thnt dst_metrics_read_only(dst"o	 ioio 3 i">dstnt">aoc#L2" idluL3" cla3s="line2"0 namalu2L01">   1
/* skbnt">2set_neadf - sets skbnet/cowithout a          rts thnt dst_metrics_read_only(dst"o	 ioio "C_INCnt">) {.c#L2" idluL3" cla3s="line2"0 namalu2L01">   1
/* @skb: >(sterrts thnt dst_metrics_read_only(dst"at class3_GC_INCnt">aoc#L2" idluL3" cla32="line154 namalu1542">   2
/* @onl:net/ lru/f =s thnt dst_metrics_read_only(dst"ETRICS_RE_GC_MINnt">aoc#L2" idluL3" cla32="line155 namalu1552">   2
/*rts thnt dst_metrics_read_only(dst"	 ioio " gc_worknt">,oc#L2" idluL3" cla32="line156 namalu1562">   2
/* Sets skbnet/coaluumo   a           was not taken56ntmpxchs thnt dst_metrics_read_only(dst"o	 ioio "xpiresnt">)aoc#L2" idluL3" cla32="line157 namalu1572">   2
/* skbnt">2drop()leteuld not BOLnt">(=ne()l =* net/chs thnt dst_metrics_read_only(dst" ioio " it">        }oc#L2" idluL3" cla3s="line157 namalu1572">   2
/*erts thnt dst_metrics_read_only(dst	 ioio " 3">locknt">)aoc#L2" idluL3" cla32="line269 namalu2692">   skbnt">2set_neadf" i">s="_garbagskbnt">2set_neadfnerics"o	 ioio " i">__s="_d ioio " i">s="_discardnt">(stru/f =net/core/code=sk_buffaro	 ioio " i">sk_bopsnt"> *=net/core/code= ioio " i">s="_releasent">(alru/f =net/core/code=s="_io rys"o	 ioio " i">s="_io rynt"> *=net/core/code=s="3at class239"co229nt">}oc#L2" idluL3" cla33="line270 namalu2701">   1
/a>
s3 " i">__s3"_f" ent">)aoc#L2" idluL3" cla33="line22" namalu22L1">   1
/class275"co275nt">                OCACHEs"o	 ioio rcucore/det/cohe ioio " i">__DST_rcucore/det/cohe i     re/code=DST_NOCACHEs"o	 ioio rcucore/det/cobhohe ioio " i">__DST_rcucore/det/cobhohe i     rlong =net/core/code=prevs"o	 pat class33="co23ent">oc#L2" idluL3" cla33="line19" nama309 namalu3092">   2
/a>Ifnet/ not i napaoncowe must take a          , becat">-
s thnt dst_metrics_read_only(dst"o	 ioio 3 i">dstnt">)oc#L2" idluL3" cla33="line2"0 namalu2L01">   1
/////////* BOLnt">(=ne()lw    ""o312nnet/ as so6ntas itet/cfcount becomes zero-
s thnt dst_metrics_read_only(dst"at class33"co233nt">{.c#L2" idluL3" cla33="line154 namalu1542">   2
/////////*erts thnt dst_metrics_read_only(dst	 ioio " 3">dhildnt">aoc#L2" idluL3" cla33="line315 nam>   2
/a>
spat class276"co276nt">                if (=net/core/code=unlikelys"o	 ioio " i">unlikelynt">(=net/core/code=dsts"o	 ioio " i">dstnt">-
spaonet/core/code=flagss"o	 ioio " i">flagsnt"> & =net/corvnt"> != =net/core/code=oldar3pat class335"co235divioc#L2" idluL3" cla33="line296 namalu2962">   2
/a>
spat BOLns177"co177nt">      OLns177f (=net/core/code=unlikelys"o	 ioio " i">unlilong =net/core/code=prevs"o	 po	 ioio "p_rmbnt">()aoc#L2" idluL3" cla33="line317 namalu3172">   2
/a>
spat skbnt">2set" i">s="_garbagskbnt">2setf (=net/core/code=unk_buffaro	 ioio " i">sk_bopet/core/code=unlikelys"o	 ioio " i">unlilong =net/core/code=prevs"o	 p ioio " i37"co237nt">oc#L2" idluL3" cla33="line298 nam>   2
/a>
spat class258"co258nt"> 3	 ioio " 3">agaiint">:oc#L2" idluL3" cla33="line299 namalu2992"et/core/code=unk_buffaro	 ioio " i">sk_bt">(&=net/core/coskbn=nelikelys"o	 ioio " oskbn=nelik             =net/coreet/core/code=unlikelys"o	 ioio " i">unlilt_metricss"o	 ioiSKB_> &REFelys"o	 ioio " SKB_> &REFICS_READ_ONLYs"o	 ioio " i">DST_	 ioio " 3">dhildnt">aoc#L2" idluL3" cla34="line170 namalu1701">   1
/a>
spat clas3pat class340"co240divioc#L2" idluL3" cla3s="linalu1701">   1
/a>
spat clas3pat class3OCOUNTnt">))oc#L2" idluL3" cla3s="lino " i">s="_garbagent">2">   2
/a>
spat class207"c37t">                      skbnt">2set_neadf" i">s="_garbagskbnt">2set_neadfnerilong =net/core/code=prevs"o	 oio " i">3psnt">, -1)aoc#L2" idluL3" cla3s="line243 namalu2432">   2
/a>
3pat class343"co243divioc#L2" idluL3" cla34="line154 namalu1542">   2
/a>Dirty hack.>   d69 it i n2.2 (i n         =),rts thnt dst_metrics_read_only(dstioio " i"3sestroynt">)oc#L2" idluL3" cla34="line155 namalu1552">   2
/*owe have _very_ good    sons not to   pea/chs thnt dst_metrics_read_only(dsto	 ioio "3i">dstnt">)aoc#L2" idluL3" cla34="line156 namalu1562">   2
/*  =* nmistake i n2.3, but we have no choi  rts thnt dst_metrics_read_only(dst"o	 ioio 3 i">savnt">)oc#L2" idluL3" cla34="line157 namalu1572">   2
/* now. _It_ _is_ _explicit_ _deliberate_rts thnt dst_metrics_read_only(dst" ioio " ii">savnt">)aoc#L2" idluL3" cla34="line157 namalu1572">   2
/* _race_ _condition_/dst.cio              p3"vocol mod3o	 ioio "3i">dstnt">)aoc#L2" idluL3" cla34="line"09 namalu2092">   2
/*rts thnt dst_metrics_read_only(dstpat class349"co249divioc#L2" idluL3" cla35="line2"0 namalu2L01">   1
/* C1">   netand originally written5by Alexey/dst.cio              p3"vocol mod3	 ioio " 3">dhildnt">aoc#L2" idluL3" cla35="line309 namalu3092">   2
/*erts thnt dst_metrics_read_only(dst	 ioio " 3">dstnt">) {.c#L2" idluL3" cla35="line206 namalu2062">   2
/a>
s    ifdow">newrofcn"nt">     ifdow"nerics"o	 ioio " i">__s="_destroy_metrics_genericnt">(alru/f =net/core/code=s="_io rys"o	 ioio " i">s="_io rs"o	 ioio " i">__s="_dics_devi  ode=oldaro	 ioio s_devi   =net/core/code=s="_iode=dsts"o	 ioio " i">dstre/code=s="_gc_works"o	 ioi3o " i">DS3_NOHASHnt">aoc#L2" idluL3" cla35="line303 namalu3032"315 nam>   2
/a>
spat clasunregistedsts"o	 ioio " iunregisted"_io rynt"> *=net/core/code=s="3pat class353"co253divioc#L2" idluL3" cla3s="lina>
spat class258"co258nt"> 3 " i">__r3fcn"nt">)) {.c#L2" idluL3" cla35="line315 nam>   2
/a>
spat claslikelys"o	 ioio " i">unlikelynt">(=net/core/code=dsts"o	 ioio " i">dstnt">-
spaonet/core/cifdow">newrofcn"nt"> ifdow"neri rynt"> *=net/core/code=s="3p	 ioio "3d. */ore/dst.c#L2" idluL3" cla3s="line256 namalu2562"2
/a>
spat claslikelys"o	 ioio " i">unlikelynt">(=net/core/code=dsts"o	 ioio " i">dstnt">-
spaonet/core/cifdow">newrofcn"nt"> ifdow"neri"_init_metricss"o	 ioio " i">s="_init_metricsnt">(=net/corede=dsts"o	 ioio " i">dstr 2
/a>
spat clasunregistedsts"o	 ioio " iunregisted"_io ong =net/core/code=prevs"o	  ioio " i3>nohashnt">)oc#L2" idluL3" cla35="line297 namalu2972">   2
/a>
3	 ioio " 3">agaiint">aoc#L2" idluL3" cla3s="line258 namalu1762">   2
/a>
spat class176"co176nt">      if (=net/core/colikelys"o	 ioio " i">unlikelynt">(=net/core/code=s="s"o	 ioio " i">dstnt">-
spaonet/core/code=dev3         3    } else {.c#L2" idluL3" cla3s="line259 namalu2592"alu305ong =net/core/code=prevs"o	 for f" ei3g. */ore/dst.c#L2" idluL3" cla36="line240 namalu2401">   1
/a>
3 ioio " i3>nohashnt">)oc#L2" idluL3" cla36="line24" namalu242
/a>
spat clasunregistedsts"o	 ioio " iunregisted"_io /a>
spat class258"co258nt"> 3"o	 ioio 3 i">dstnt">aoc#L2" idluL3" cla3s="line26" namalu26L2"f (=net/core/colikelys"o	 ioio " i">unlikelynt">(=net/core/code=dsts"o	 ioio " i">dstnt">-
spaonet/core/code=maluas"o	 ioio " i">inputnt"> = =net/core/code=s="s"o	 ioio " i">dstnt">-
spaonet/core/code=outluas"o	 ioio " i">outluant"> = =net/core/code=s="_discards"o	 ioi3l hash ta3le */ore/dst.c#L2" idluL3" cla3s="line263 nam>   2
/a>
spat class258"co258nt"> 33nt">    3           }oc#L2" idluL3" cla3s="line264 namalu26L2"f (=net/core/colikelys"o	 ioio " i">unlikelynt">(=net/core/code=s="s"o	 ioio " i">dstnt">   2
/a>
spat clasnet" i">s="_garbagclasnetf (=net/core/code=unlikelys"o	 ioio " i">unlikelynt">(=net/core/code=s="s"o	 ioio " i">dstn>        =net/core/cooopback_ode=s="s"o	 ioio "ooopback_odet/core/code=s="_discards"o	 ioi3l" i">__r3t">        }oc#L2" idluL3" cla36="line295 namalu2952">   2
/a>
spat class177"co177nt">      lass177f (=net/core/code=unlikelys"o	 ioio " i">unlikelynt">(=net/core/code=s="s"o	 ioio " i">dstnre/code=s="_discards"o	 ioi3l	 ioio "3i">NULLnt">aoc#L2" idluL3" cla36="line256 namalu2562"2
/a>
spat clasllass247"co247nt">                =net/core/code=dde=s="s"o	 ioio " i">dstnre/code=s="_discards"o	 ioi3lioio " i36"co266divi}oc#L2" idluL3" cla36="line227 namalu2272">   2
/a>
spat clas3" i">s="_3estroynt">)aoc#L2" idluL3" cla36="line318 namalu3e=__s="_f" es"o	pat class368"co268nt">oc#L2" idluL3" cla36="line249 namalu2492">   2
/a>
3"o	 ioio 3 i">dstnt">)oc#L2" idluL3" cla3s="line206 na>   2
/a>
spat clast">2""v_eveT_NOCACHEnt">) &at">2""v_eveT_nerics"o	 ioio " i">__s="_dnotifier_bages"o	 ioio " i">snotifier_bages =net/core/code=s="_i =* "o	 ioio " i">s =* >dstr alu31L2">   2
/a>
spat class3eveT_NOCACHEnt">) &aeveT_nerire/code=s="_gc_works"o	 ioi3at class230"co270nt">{.c#L2" idluL3" cla37="line26" namalu26L1">   1
/a>malu2        =net/coretdsts"o	 ioio " ietd>dstnt">-
spaonet/core/code=dev3	 ioio " 3">dstnt">) {.c#L2" idluL3" cla3s="lina>
spat class258"co258nt"> 3io " i">n3wrofcn"nt">aoc#L2" idluL3" cla37="line263 nams"o	 ioio " i">__s="_dics_devi  ode=oldaro	 ioio s_devi   =net/core/code=s="_iode=dsts"o	 ioio " i">dstnt">   2
/a>
spat etdsts"o	 ioio " ietd>dstre/code=s="_discards"o	 ioi3pat class373"co273divioc#L2" idluL3" cla3s="line274 nams"o	 ioio " i">__s="_destroy_metrics_genericnt">(alru/f =net/core/code=s="_io rys"o	 ioio " i">s="_io r/core/code=s="_io	 s"o	 ioio " i">s=a               =net/corecore/code=ps"o	 ioio " i">pnt"> = =net/core/code=NULLario " i">_3rofcn"nt">)aoc#L2" idluL3" cla37="line235 namalu2352">   2
/a>
3newrofcn"3t"> < 0)aoc#L2" idluL3" cla3s="line276 namswitchu1762">   2
/a>
seveT_NOCACHEnt">) &aeveT_neri /a>
spat class258"co258nt"> 3 " i">new3ofcn"nt">) {.c#L2" idluL3" cla3s="line277 nam08nt"      =net/corecETDEV_UNREGISTER_FINAe/code=ps"o	 ioioETDEV_UNREGISTER_FINAe"lin8nt">=net/core/code=agaiidl3o	 ioio "3i">dstnt">)aoc#L2" idluL3" cla3s="line278 nam08nt"      =net/corecETDEV_DOW75"co275nt">    cETDEV_DOW7"lin8nt">=net/core/code=agaiidl3oat class3 i">dstnt">)oc#L2" idluL3" cla3s="line279 namalu2792"      =net/coremutex_ages"o	 ioio " i">smutex_agesnericcore/code=system_wqaro	 ioimutextrics_genericnt">(aioimutex>dstnre/code=s="_discards"o	 ioi3o	 ioio "3i">dstnt">)aoc#L2" idluL3" cla3s="line280 namalu2801"st.cnet/core/code=unlikelys"o	 ioio " i">unlispaonet/core/code=outlbusy_ages"o	 ioio " i">soutlbusy_agesi">pn="co261nt">                               a>
spat class277"co277nt">                        =net/core/coelys"o	 ioio " i">unlikelynt">(=net/core/code=dsts"o	 ioio " i">dstnt /a>
spat class258"co258nt"> 30nt">    3           }oc#L2" idluL3" cla38="line26" namalu26L1">   1
/acore/code=s="_io	 s"o	 ioio " i">s=a               =net/core                          >
spat class258"co258nt"> 30 ioio " 3t">        }oc#L2" idluL3" cla38="line26" namalu26L2">   2
/a>62">   2
/a>
s    ifdow">newrofcn"nt">     ifdow"neric_init_metricss"o	 ioio " i">s="_init_metricsnt">(=net/corede=dsts"o	 ioio " i">dstr 2
/a>
spat claseveT_NOCACHEnt">) &aeveT_neri   if (=net/core/cocETDEV_DOW75"co275nt">    cETDEV_DOW7"linnre/code=s="_discards"o	 ioi3oo " i">n3="co282  vi}oc#L2" idluL3" cla38="line303 namalu3032">   2
/a>
spat class303"co30" i">s="_3eleasent">)aoc#L2" idluL3" cla3s="line284 namalu2842">   2
/a>
3pat class384"co284divioc#L2" idluL3" cla38="line295 namalu2952">   2
/a>
spat a>
spat class218"co218nt">        =net/core/code=spin_lock_bharo	 ioio " i">spin_lock_bhnt">(&=net/core/code=s="_garbages"o	 ioio " i">s="_garbagent">.=net/core/code=locks"3ro	 ioio 3 i">oldnt">)oc#L2" idluL3" cla38="line256 namalu2562"2
/a>
spat claslikelys"o	 ioio " i">unli">-
spaonet/core/code=nusearo	 ioio " i">nusent"> = =net/core/code=dst_garbages"o	 ioio " i">s="_garbagent">.=net/core/code=lists3at class236"co286nt">{.c#L2" idluL3" cla38="line247 namalu2472">   2
/a>
spat c>
spat class22="co221nt">        =net/core/code=dst_garbages"o	 ioio " i">s="_garbagent">.=net/core/ccore/code=ps"o	 ioio " i">pnt"> = =net/core/code=NULLar " i">GFP3ATOMICnt">)aoc#L2" idluL3" cla38="line298 namalu2982">   2
/a>
spat a>
spat class228"co228nt">        =net/core/code=spin_unlock_bharo	 ioio " i">spin_unlock_bhnt">(&=net/core/code=s="_garbages"o	 ioio " i">s="_garbagent">.=net/core/code=locks"3pat class388"co288nt">oc#L2" idluL3" cla38="line249 namalu2492">   2
/a>
3"o	 ioio 3 i">pnt">) {.c#L2" idluL3" cla3s="line290 namalu2901"alu1762">   2
/a>
so	 s"o	 ioio " i">s=a      nt">-
spaonet/core/code=dev3o	 ioio "3i">oldnt">)aoc#L2" idluL3" cla3s="line29" namalu29L1">   1
/acore/code=s="_io	 s"o	 ioio " i">s=a      >        =net/core/code=dsts"o	 ioio " i">dstnt">-
spaonet/core/code                       >
spat class258"co258nt"> 3"o	 ioio 3 i">newnt">aoc#L2" idluL3" cla39="line26" namalu26L2"  2
>
spat class258"co258nt"> 3"o " i">n39="co292nt">oc#L2" idluL3" cla3s="line293 namalu2932"alu2472">   2
/a>
spat c>
sbusy_ages"o	 ioio " i">soutlbusy_agesi">p">-
spaonet/core/code                       >
spat class258"co258nt"> 3" i">s="_3AX_MAXnt">)aoc#L2" idluL3" cla39="line264 namalu26L2"st.cnn="co261nt">                               a>
spat class277"co277nt">                        =net/core/coelys"o	 ioio " i">unlikelynt">(=net/core/code=dsts"o	 ioio " i">dstnt >
spat class258"co258nt"> 3"at class394"co294divioc#L2" idluL3" cla3s="line295 namalu2952"alu2472">   2
/a>
spat c>
sifdow">newrofcn"nt">     ifdow"neric_init_metricss"o	 ioio " i">s="_init_metricsnt">(=net/corede=dsts"o	 ioio " i">dstr 2
/a>
spat claseveT_NOCACHEnt">) &aeveT_neri   if (=net/core/cocETDEV_DOW75"co275nt">    cETDEV_DOW7"linnre/code=s="_discards"o	 ioi3ps"o	 ioi3 " i">pnt">aoc#L2" idluL3" cla3s="line296 namalu2962">   2
/a>
spat mutex_=net/c"o	 ioio " i">smutex_=net/cnericcore/code=system_wqaro	 ioimutextrics_genericnt">(aioimutex>dstnre/code=s="_discards"o	 ioi3o	 ioio "3i">newnt">)aoc#L2" idluL3" cla39="line247 namalu2472"breakre/code=s="_discards"o	 ioi3o" i">GFP397"co297nt">oc#L2" idluL3" cla3s="line298 nam>   2
/a>
spat class303"co30	 ioio " 3">oldnt">) {.c#L2" idluL3" cla3s="line299 namalu2652">   2
/a>
spat OTIFY_DONio " i">flagsnt" OTIFY_DONi     >
spat class258"co258nt"> 4s"o	 ioio4" i">pnt">)aoc#L2" idluL4" cla4s="lin>   2
/a>
spat class303"co34	 ioio " 4">prevnt">)aoc#L2" idluL4" cla40="line23" namalu23L1">   1
/a>
4METRICS_R4AD_ONLYnt">)oc#L2" idluL4" cla40="line206 nas"o	 ioio " i">__s="_dnotifier_bages"o	 ioio " i">snotifier_bages =net2
/a>
spat clast">2""v_notifierNOCACHEnt">) &at">2""v_notifier       a>
spat class258"co258nt"> 4o	 ioio "4i">NULLnt">aoc#L2" idluL4" cla4s="line303 namre/code=s="_garbnotifier_call"o	 ioio " i">snotifier_call"line3        =net/core/code=v_eveT_NOCACHEnt">) &at">2""v_eveT_nerire/code=s="_gc_works"o	 ioi43nt">    4           }oc#L2" idluL4" cla4s="line304 namre/code=s="_garbprioritetrics_genericntpriorite       -10,ma309 namalu3092">   2
/a>must be callnetafter other _gc;=ne notifiers/*erts thnt dst_metrics_read_only(ds4304"co3044t">        }oc#L2" idluL4" cla4s="lin} >
spat class258"co258nt"> 4s64"co3044t" i">pnt">aoc#L2" idluL4" cla4s="lin>
spat class258"co258nt"> 4s74"co3044t">newnt">)aoc#L2" idluL4" cla4s="line3"0 namalu3L01">   1
inis"o	 ioio " i">dstinis =net2
/a>
spat clast">2inis"o	 ioio " i">dt">2inisnerice3"0 >
spat class258"co258nt"> 4_metrics_4enericnt">)aoc#L2" idluL4" cla4s="lina>
spat class258"co258nt"> 4o9etrics_4e>oldnt">) {.c#L2" idluL4" cla40="line239 namalu2392">   2
/registedsnetdevi  _notifierNOCACHEnt">) &aregistedsnetdevi  _notifiernericcore/code=system_wqaro	 ""v_notifierNOCACHEnt">) &at">2""v_notifier    nre/code=s="_discards"o	 ioi4) is uhid4.  */ore/dst.c#L2" idluL4" cla41="lin>   2
/a>
spat class303"co34ro	 ioio 4 i">oldnt">)oc#L2" idluL4" cla4s="lin


oldnt">footeds> The original LXR software5by themalu2392">http://sourcest.ge.pat projects/lxds>LXR 92">unite , =* nexperi> al version5by alu2392">mailto:lxd@)ocux.no>s=xd@)ocux.not/cor
oldnt">subfooteds> =xd.)ocux.no kindly hos netby alu2392">http://www.redpill-)ocpro.no>sRedpill Locpro AS , provider of Locux 92nsulto and operations servi s si 1995.