VULN_CHECK_I913V6 7mjdddlZddlZddlZddlZddlZddlZddlZddlZddlZejjeje jjjddlmZmZmZmZmZmZddlmZdZdZdZGddZGd d eZGd d eZGd deZGddeZGddeZ GddeZ!GddeZ"Gdde"Z#Gdde"Z$GddeZ%GddeZ&Gdd eZ'Gd!d"eZ(Gd#d$eZ)Gd%d&e&Z*Gd'd(Z+Gd)d*Z,Gd+d,eZ-Gd-d.eZ.Gd/d0eZ/Gd1d2eZ0Gd3d4eZ1Gd5d6eZ2Gd7d8Z3Gd9d:Z4hd;Z5dd?Z6d>d@dAd>dBZ7hdCZ8dDZ9ddEZ:ddFZ;ddGZdJZ?dKZ@dLZAddMZBdNZCdOZDdPZEdQZFdRZGddSZHdTZIdUZJdVZKddWZLdXZMddYZNdZZOd[ZPd\ZQd]ZRdd^ZSdd_ZTd`ZUdaZVdbZWdcZXdddZYdeZZdfZ[ddgZ\dhZ]diZ^djZ_dkZ`dlZaddmZbdnZcdoZddpZedqZfdrZgdsZhddtZidduZjdvZkdwZldxZmdyZndzZod{Zpd|Zqd}Zrd~ZsdZtdZuddZvdZwdZxdZydZzdZ{dZ|dZ}dZ~edk(re~yy)N) SpecFamily SpecAttrSetSpecAttr SpecOperation SpecEnumSet SpecEnumEntry)SpecSubMessagecB|jjddSN-_)upperreplacenames 4/usr/lib/python3.12/site-packages/pyynl/ynl_gen_c.pyc_upperr ::<  S ))cB|jjddSr )lowerrrs rc_lowerrrrc|ddk(r|jdryt|dd}|ddk(r|dz}d|zdz }|ddk(r|jdr| dz }|S)zN Turn a string limit like u32-max or s64-min into its numerical value ruz-mins)endswithint)rwidthvalues rlimit_to_numberr"st Aw#~$--/ Qr OE Aw#~   %Z1 E Aw#~$--/  LrceZdZdZy) BaseNlLibcy)Nz ys->family_idselfs r get_family_idzBaseNlLib.get_family_id+srN)__name__ __module__ __qualname__r)r&rrr$r$*srr$ceZdZfdZdZdZdZddZd dZdZ dZ d Z d Z d Z d Zd ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZd!dZ xZ!S)"Typecnt|||||||_||_|d|_|j di|_d|_d|_d|_ d|vr |d|_ d|vr|d}n d|vr|d}nd}|r||_ |j|jk(rt|j|_n)t|jd|j|_|j|j j"vrd|jzdz|_nd|jz|_t|j|_|j&t(vr|xj&dz c_|j&d j+rd|j&z|_d|_t/|d y) NtypechecksFlennested-attributes sub-messager struct r enum_name)super__init__attrattr_setr0getr1requestreply is_selectorr2 nested_attrsrr ident_namenested_render_namefamilyconstsnested_struct_typec_name_C_KWisdigitr6delattr)r(rBr:r9r!nested __class__s rr8z Type.__init__0s 47   L hhx,     D=E{DH $ &-.F d "-(FF  &D   FKK/*1V5F5F4G*I'*1V5F5F4GqIZIZH[2\*]'  DKK$6$66*3d6M6M*MPS*S'*3d6M6M*M'dii( ;;%  KK3 K ;;q> ! ! # +DKk"rcv|jj|jj|jSN)rB attr_setsr: subset_ofrr's r_get_real_attrzType._get_real_attr]s*{{$$T]]%<%<=diiHHrc|d|_|jjr|jj yyNT)r<r:rNrO set_requestr's rrRzType.set_requestas0 == " "    ! - - / #rc|d|_|jjr|jj yyrQ)r=r:rNrO set_replyr's rrTzType.set_replyfs0 == " "    ! + + - #rc|jj||}||St|tr|S||jj vr|jj |dSt |S)Nr!)r1r; isinstancerrBrCr")r(limitdefaultr!s r get_limitzType.get_limitksf w/ =L eS !L DKK&& &;;%%e,W5 5u%%rcf|jj||}|yt|trt ||zS||j j vrR|j j |}|jdr t|St|j dd|St|S)Nheaderrr )r1r;rVrstrrBrCr)r(rWrXsuffixr!consts r get_limit_strzType.get_limit_strus w/ = eS !u:& & DKK&& &KK&&u-Eyy"u~%dkk&12!E7;< <u~rcd|jvr|jdj}nPd|jvr|jd|j}n$|jj|j}t ||_|jj r3|j|jjk7r tdyy)Nparent-sub-message name-prefixz/Overriding checks not supported by codegen, yet) r9r6rr: name_prefixrrNr1rO Exception)r(r6s rresolvez Type.resolves 499 , "67AAI dii '99]34TYYK@I==445dii[AI + == " "{{d113::: QRR; #rcyrLr&r's r is_multi_valzType.is_multi_valrc|jdvS)N>u8s32s64u16u32u64)r0r's r is_scalarzType.is_scalarsyyEEErcyNFr&r's r is_recursivezType.is_recursiverc@|jxr |j SrL)rtopr(ris ris_recursive_for_opzType.is_recursive_for_ops  "0255y0rcy)Npresentr&r's r presence_typezType.presence_typesrc|j|k7ry|jdk(r|dk(rdnd}|d|jdS|jdvr|dk(rdnd}|d|jdSy) Nr|user__r[zu32 z:1;>r2count;)r}rE)r(space type_filterpfxs rpresence_memberzType.presence_members    ; .     9 ,6/$rCU$t{{m3/ /    #3 36/$rCU$t{{m1- - 4rcyrLr&rxs r_complex_member_typezType._complex_member_typerircyrsr&r's rfree_needs_iterzType.free_needs_iterrurcv|js|jdvrd|d||jdgSgS)N>r2rfree(->);)rhr}rE)r(ryvarrefs r _free_lineszType._free_linessD    $"4"4"6:J"JC53% }B78 8 rcn|j|||}|D]}|jj|yrL)rcwp)r(ryrrlineslines rfreez Type.frees/  S#.D EEGGDMrc|j|}|rJ|ddk7rdnd}||zdz|jzg}|jdk(r|d|jzgz }|Std|j)N* r[runsigned int n_z-Struct member not implemented for class type )rrEr}rer0)r(rymemberspcargs r arg_memberzType.arg_members**2. s*#CC<#% 34C!!#w.)DKK788JG {STTrcZ|j|}|rb|jrdnd}|j|rd}|ddk7rdnd}|jj ||||j dy|j |}|D] }|jj |dz"y)Nrr[rrr)rrhrzrrrEr)r(ryrptrrmembersones r struct_memberzType.struct_members**2. **,#"C''+s*#C EEGGvhseC5 Q7 8 //"%C EEGGC#I rcd|zdzS)N { .type = , }r&r(policys r _attr_policyzType._attr_policysf$u,,rctd|jdz}|j|}|jd|jd|dy)Nznla-r0 [] = ,)rr9rrr6r(rrspecs r attr_policyzType.attr_policysJ$))F"334  ( s4>>"$tfA ./rc2td|j)Nz+Type policy not implemented for class type rer0r's r _attr_typolzType._attr_typolsEdii[QRRrc |j}|jd|jddd|jd|dd y)N[r{z .name = "z", }r)rrr6r)r(rtypols r attr_typolzType.attr_typolsD  " q SEDII;c%Q OPrc |j}|dvr/|jjd|d|d|jd|jj|dy)N>r2r|if (->_.)r)r}rrrE)r(ryrrpresences r_attr_put_linezType._attr_put_linesX%%' ) ) EEGGd3%s8*Adkk]!< = 4& rc pd|d|jd|d|jd }|j|||y)N ynl_attr_put_(nlh, , rrr6rEr)r(ryrput_typers r_attr_put_simplezType._attr_put_simples>xjt~~.>bR }TUV BT*rc2td|j)Nz#Put not implemented for class type rr(ryrs rattr_putz Type.attr_puts=dii[IJJrc2td|j)Nz(Attr get not implemented for class type rrs r _attr_getzType._attr_getsB499+NOOrc|j||\}}}t|tur|g}t|tur|g}|rdnd}|jj |d|j d|j st|jjd|jjd|jdk(r+|jj|d |jd |r<|jj|D]}|jj||D]}|jj||jjy ) Nifelse ifz (type == rrz"if (ynl_attr_validate(yarg, attr))return YNL_PARSE_CB_ERROR;r| ->_present. = 1;T) rr0r]r block_startr6rhrr}rEnl block_end) r(ryrfirstr init_linesr kwrs rattr_getz Type.attr_gets%#~~b#6z1 ;# GE  s "$JT  "Z/?qAB  " EEGG8 9 EEGG0 1!!#y03%{4;;-u=>  EEHHJ" #D EEGGDM rc2td|j)Nz&Setter not implemented for class type rr(ryrrs r _setter_lineszType._setter_lines s@ LMMrc |r|ng|jgz}|ddj|}g}|jr|dgz }g} d} tdt |D]} |ddj|d| dgzd|| } | t |dz k(rH|j dk7r5|ddj|d| dgzd |j d|| } | j | d zdj|dd } | r| dz } | |j||| z } | |j||| z } t||| d d j|} t| Dcgc] }d|vs| c}}t| Dcgc] }d|vs| c}}|r|sd| z} |jjd| || t||| d|g|j|zycc}wcc}w)Nrrunsigned int i;r[rz _present.rr|r rrderef_set_rzalloc(rstatic inline void *) local_varsbodyargs)rEjoinrranger2r}appendrr op_prefixboolr write_func type_namer)r(ryr directionrrrrrcoderiref_path func_namexrallocs rsetterz Type.setters1srdkk]25388C=/*    ! ,- -Jq#c(#Ab#bq'RD.!9 :)CF8LHCHqL T%7%7%9Y%F!U"SXXc"1gn%=$>a@R@R@T?UUVWZ[\W]V^_ KK7* +$88CH%  OH   S(33 ""2vx88 Ye<=U388C=/R 511 Q567AQa78 y(I -yZ""+B "G!H3%PQTXTcTcdfTgg  i 67s# G$-G$ G) G)rLNr[FNreq)"r*r+r,r8rOrRrTrYr`rfrhrqrtrzr}rrrrrrrrrrrrrrrrrr __classcell__rJs@rr.r./s+#ZI0 . &  SF1 .  U -0 SQ +KP4Nirr.c>eZdZdZdZdZdZdZdZdZ d d Z y) TypeUnusedcyrr&r's rr}zTypeUnused.presence_type1rcgSrLr&rxs rrzTypeUnused.arg_member4 rcdgddfS)Nrr&rs rrzTypeUnused._attr_get7s,-tT99rcy)Nz.type = YNL_PT_REJECT, r&r's rrzTypeUnused._attr_typol:(rcyrLr&r(rs rrzTypeUnused.attr_policy= rcyrLr&rs rrzTypeUnused.attr_put@r rcyrLr&r(ryrrs rrzTypeUnused.attr_getCr rNcyrLr&r(ryrrrrrs rrzTypeUnused.setterFr rFNN) r*r+r,r}rrrrrrrr&rrrr0s*:)    rrc8eZdZdZdZdZdZdZdZd dZ y) TypePadcyrr&r's rr}zTypePad.presence_typeKrrcgSrLr&rxs rrzTypePad.arg_memberNrrcy)Nz.type = YNL_PT_IGNORE, r&r's rrzTypePad._attr_typolQrrcyrLr&rs rrzTypePad.attr_putTr rcyrLr&r s rrzTypePad.attr_getWr rcyrLr&rs rrzTypePad.attr_policyZr rNcyrLr&rs rrzTypePad.setter]r rr) r*r+r,r}rrrrrrr&rrrrJs%)    rrcVeZdZfdZfdZdZfdZdZdZdZ dZ d Z xZ S) TypeScalarct|||||d|_d|vrd|dd|_|js|j d|_t |dd|_t |dy)Nr[z byte-orderz /*  */ is_bitfieldr)r7r8byte_order_comment is_classic _init_checksrrHrr(rBr:r9r!rJs rr8zTypeScalar.__init__bs| 47"$ 4 (,T,-?,@&DD #  "     m$k"rc&|jtd|jvr|jdrd|_nGd|jvr2|jj |jdddk(|_nd|_|jsDd|jvr6|jj |jdj |_y|jrd|jdzd z|_yd|jz|_y) Nz enum-as-flagsTenumr0flagsFrr64) resolve_upr7r9rrBrC user_typeris_auto_scalarr0r(rJs rrfzTypeScalar.resolvets  dii 'DIIo,F#D  tyy #{{11$))F2CDVLPWWD $D Fdii$7![[// &0ABLLDN  !DIIaL047DN!DII-DNrc d|jvr|jj|jd}|j\}}||d|jd<nQd|jvr&|dk7s|j ddk(r||jd<d|jvr||jd<d|jvr|d|jvrn|j d|j dkDr>%+T^^E1-EF 7tyy|s*1$))<^_` ` <4%<(,DKK %(rcd|jvs |jr|jr9|jj|jd}|j d}n<|jj|jd}t |d}d|zdz }d|d|d d Sd |jvrd |d t|jdSd|jvr*d|d|jdd|jdd Sd|jvrd|d|jdd Sd|jvrd|d|jdd Sd|jvrd|d t|jdSt|-|S)Nz flags-maskr#Tas_flagsentriesrzNLA_POLICY_MASK(z, 0xrrr.zNLA_POLICY_FULL_RANGE(, &z_range)rzNLA_POLICY_RANGE(rr,r-zNLA_POLICY_MIN(zNLA_POLICY_MAX(r+zNLA_POLICY_VALIDATE_FN(z _validate)) r1rrBrCr9get_maskr2rr6r`r7r)r(rr#maskr$flag_cntrJs rrzTypeScalar._attr_policys 4;; &$*:*:{{))$))F*;<}}d}3 **4;;|+DEuY/0X *%fXT$q; ; T[[ (+F83wt~~7N6OwW W  #&vhb1C1CE1J0K2dN`N`afNgMhhij j dkk !$VHBt/A/A%/H.IK K dkk !$VHBt/A/A%/H.IK K  $,VHC8O7PPZ[ [w#F++rc:dt|jdddS)N.type = YNL_PT_Urr)rr0r's rrzTypeScalar._attr_typols!!'$))AB-"8!9<>"!DKK=1H1H0IJKKrc>|j|||jyrL)rr0rs rrzTypeScalar.attr_puts b#tyy1rcF|d|jd|jdddfS)Nrz = ynl_attr_get_(attr);)rEr0rs rrzTypeScalar._attr_gets,b %5dii[H$PTTTrc(|d|jdgS)N = rrErs rrzTypeScalar._setter_liness(#dkk]!,--r) r*r+r,r8rfr rrrrrrrrs@rrras2#$."-2,,=L2U.rrc*eZdZdZdZdZdZdZy)TypeFlagcgSrLr&rxs rrzTypeFlag.arg_memberrrcy)Nz.type = YNL_PT_FLAG, r&r's rrzTypeFlag._attr_typol&rcF|j||d|jdy)Nynl_attr_put(nlh, z , NULL, 0))rr6rs rrzTypeFlag.attr_puts# B'9$..9I%TUrc gddfSrLr&rs rrzTypeFlag._attr_gets4~rcgSrLr&rs rrzTypeFlag._setter_linesrrN)r*r+r,rrrrrr&rrrDrDs'VrrDcBeZdZdZdZdZdZdZdZdZ dZ d Z y ) TypeStringc"d|jgS)N const char *rBrxs rrzTypeString.arg_memberst{{m,--rcyNr2r&r's rr}zTypeString.presence_typerurcV|jjd|jdy)Nzchar *rrrrErxs rrzTypeString.struct_member & Q'(rc,d}|jr|dz }|S)Nz.type = YNL_PT_NUL_STR, z.is_selector = 1, )r>r(rs rrzTypeString._attr_typols *    ) )E rcd|jvrd|jdzdz}|Sd|z}d|jvr|d|jdzz }|dz }|S)N exact-lenNLA_POLICY_EXACT_LEN(rrmax-lenz , .len = r)r1r`)r(rmems rrzTypeString._attr_policyso $++ %)D,>,>{,KKcQC  'CDKK'{T%7%7 %BBB 5LC rc|jjddrd}nd}|j|}|jd|jd|dy)Nzunterminated-okF NLA_STRINGNLA_NUL_STRINGrrr)r1r;rrr6rs rrzTypeString.attr_policysO ;;??,e 4!F%F  ( s4>>"$tfA ./rc*|j||dy)Nr])rrs rrzTypeString.attr_puts b#u-rc|dz|jz}|d|d|jdd|d|jd|d|jdgdgd gfS) N->_len. = len;rz = malloc(len + 1);memcpy(z, ynl_attr_get_str(attr), len);z [len] = 0;?len = strnlen(ynl_attr_get_str(attr), ynl_attr_data_len(attr));unsigned int len;rBr(ryrlen_mems rrzTypeString._attr_gets| /DKK/)7#%r$++&9:#b -LM%r$++j13RR#$ % %rc n|d|jd|d|dd|d|jd|d|d|dgS) Nz = strlen(r = malloc(z + 1);rcrrz] = 0;rBrs rrzTypeString._setter_liness\*Jt{{m26(*XJf5&DKK=8*B?(!H:V,. .rN) r*r+r,rr}rrrrrrrr&rrrMrMs/.) 0.%.rrMc<eZdZdZdZdZdZdZdZdZ dZ y ) TypeBinaryc$d|jdgS)Nz const void *z size_t lenrBrxs rrzTypeBinary.arg_member st{{m,l;;rcyrQr&r's rr}zTypeBinary.presence_typerurcV|jjd|jdy)Nzvoid *rrSrxs rrzTypeBinary.struct_memberrTrcy)Nz.type = YNL_PT_BINARY,r&r's rrzTypeBinary._attr_typols'rct|jdk(rnMt|jdk(r*t|jd}|dvrtd|ztdt|jdk(rd}|Sd|jvrd|j dzd z}|Sd |jvrd |j d zd z}|Sd |jvrd |j d zd z}S)Nrr>rZmin-lenrXz#Unsupported check for binary type: z8More than one check for binary type not implemented, yetz{ .type = NLA_BINARY, }rXrYrrqzNLA_POLICY_MIN_LEN(rZzNLA_POLICY_MAX_LEN()r2r1listrer`)r(r check_namer[s rrzTypeBinary._attr_policys t{{ q    "dkk*1-J!DD E RSSVW W t{{ q +C DKK ')D,>,>{,KKcQC  $++ %'$*<*_count.z = len / sizeof(__rrzlen = rrrvrcrwrxre)rEr;rfs rrzTypeBinaryScalarArray._attr_getbs #dkk1)-dhhz.B-C2F dhhz.B-C2F%r$++o6#b -IJL11#$ % %rcb|dd|jdd|dd|d|jdgS) Nz = count;zcount *= sizeof(__rrz = malloc(count);rcrz , count);rrs rrz#TypeBinaryScalarArray._setter_linesksM*I&$TXXj%9$:"=(+,&DKK= :< eZdZdZdZdZdZdZdZdZ d d Z y) TypeNestc\|jj|jjSrL)rBpure_nested_structsr? recursiver's rrtzTypeNest.is_recursives#{{..t/@/@AKKKrc|jSrLrDrxs rrzTypeNest._complex_member_type&&&rc g}d}|j|rd}|d|d||jdgz }||jd||d||jdgz }|S)N&r[rrr_free(r)rzrErA)r(ryrrrats rrzTypeNest._free_liness|   # #B 'B SEC5 Q78 8E T,,-VB4uBseDKK=PRSTT rc"d|jdSN.type = YNL_PT_NEST, .nest = &_nest, rAr's rrzTypeNest._attr_typol/0G0G/HPPrc&d|jzdzS)NzNLA_POLICY_NESTED( _nl_policy)rrs rrzTypeNest._attr_policys#d&=&== MMrc |j|rdnd}|j|||jd|jd||d|jdzy)Nr[r _put(nlh, rrr)rzrrAr6rE)r(ryrrs rrzTypeNest.attr_putsb++B/RS B(?(?'@ %K#~~.bSEDKK=J&K LrcR|jj|j}ddg}|jD]"}|j |d|j $d|j ddj|ddg}d |j d d |d|jd g}||dfS) Nz&pargr9rrz_parse(r))rparg.rsp_policy = &_nest; parg.data = &r) rBrr?external_selectorsrrrArrE)r(ryrpnsrsel get_linesrs rrzTypeNest._attr_getskk--d.?.?@ ))+C KK3%r#((, -,D334GDIIdO;LBO13 +D,C,C+DFK%cU"T[[M;= *d**rNc |r|ng|jgz}|jj|jj D]7\}}|j r|j ||j||||9y)N)rrr)rErBrr? member_listrtr) r(ryrrrrrr r9s rrzTypeNest.settersvsrdkk]2yy44T5F5FGSSUGAt  " KKD--y3  !Vrr) r*r+r,rtrrrrrrrr&rrrrs.L'QNL +!rrcdeZdZfdZdZdZdZfdZdZdZ dZ d Z d Z d Z d ZxZS) TypeMultiAttrc8t|||||||_yrL)r7r8 base_type)r(rBr:r9r!rrJs rr8zTypeMultiAttr.__init__s 47"rcyrQr&r's rrhzTypeMultiAttr.is_multi_valrircyrr&r's rr}zTypeMultiAttr.presence_typerrcd|jvs|jddk(r |jS|jddk(rd|jvry|jddk(ry|jdtvrJ|jdk(rdnd }|jr|j d d z}||zS|jd}||zSt d |jdd )Nr0nestbinaryr}stringzstruct ynl_string *rrr[rr% Sub-type  not supported yet)r9rDscalarsku_spacer(r0re)r(ry scalar_pfxrs rrz"TypeMultiAttr._complex_member_types  "dii&76&A** * YYv ( *x499/D YYv ( *( YYv ' )!#!6BJ""yy|d*$ $yy($ $i &(9'::LMN Nrc|jdk(rEd|jvr7dt|jdd|jd|jgSt||S)Nrr}r5rr)r0r9rrEr7rr(ryrJs rrzTypeMultiAttr.arg_memberse 99 X%:gdii&9:;2dkk]K%dkk]35 5w!"%%rc$|jddvS)Nr0>rrr9r's rrzTypeMultiAttr.free_needs_itersyy $666rc g}|jdtvr|d|d||jdgz }|S|jddk(r|d|d||jdgz }|S|jddk(rD|d|d|d|jd d|d||jd d|d||jdgz }|Sd|jvs|jdd k(rP|d|d|d|jd |jd |d||jd d|d||jdgz }|St d |jdd)Nr0rrrrrfor (i = 0; i < z_count.; i++)[i]);rz_free(&zFree of MultiAttr sub-type r)r9rrErAre)r(ryrrrs rrzTypeMultiAttr._free_liness 99V  ' cU"SE$++b9: :E" !YYv ( * cU"SE$++b9: :E YYv ( * "3%r#gdkk]&IuBseDKK=6uBseDKK=3 E 499 $ &(9V(C "3%r#gdkk]&I**+73%r#t{{m5QuBseDKK=3 E 9$))F:K9LL^_` `rc8|jj|SrL)rrrs rrzTypeMultiAttr._attr_policys~~**622rc6|jjSrL)rrr's rrzTypeMultiAttr._attr_typols~~))++rc(d|jdddfS)Nn_++;rBrs rrzTypeMultiAttr._attr_getsDKK=$dD00rc |jdtvru|j}|jj d|d|j d|jj d|d|j d|d|j d y|jdd k(rd |jvr|jj d|d|j d|jj d |j d |d|j dt|jd d y|jddk(rf|jj d|d|j d|jj d|j d|d|j dyd|jvs|jddk(rm|jj d|d|j d|j|||jd|j d |d|j dzytd|jdd)Nr0rrrrrrrrrr}rIr6z[i], sizeof(struct ));rzynl_attr_put_str(nlh, z [i]->str);rrz[i])zPut of MultiAttr sub-type r) r9rr0rrrEr6rrrArer(ryrrs rrzTypeMultiAttr.attr_puts 99V  'yyH EEGG&se9T[[MH I EEGGmH:VDNN3C2cU"T[[MY^_ ` YYv ( *x499/D EEGG&se9T[[MH I EEGG((8C54;;-Obcjkoktktu}k~ccAADE F YYv ( * EEGG&se9T[[MH I EEGG,T^^,>"2#cU"T[[M N*O P869J8KK]^_ _rcJ|d|jd|d|jdgSNrAr = n_rBrs rrzTypeMultiAttr._setter_lines4(#dkk]!,*E$++a02 2r)r*r+r,r8rhr}rrrrrrrrrrrs@rrrsA# O"& 7,3,1`$2rrcReZdZdZdZdZfdZfdZdZdZ dZ d Z xZ S) TypeIndexedArraycyrQr&r's rrhzTypeIndexedArray.is_multi_valrircyrr&r's rr}zTypeIndexedArray.presence_typerrcHd|jvs|jddk(r |jS|jdtvr%|jdk(rdnd}||jdzS|jddk(rd|jvryt d|jdd ) Nrrrrr[rrXrr)r9rDrrr1re)r(ryrs rrz%TypeIndexedArray._complex_member_types TYY &$))J*?6*I** * YYz "g -!#!6BJ * 55 5 YYz "h .;$++3Mi *(='>>PQR Rrc|jdk(r=d|jvr/d|jd|jddd|jgSt||S)NrrXzunsigned char (*z)[]r)sub_typer1rEr7rrs rrzTypeIndexedArray.arg_member)sb ==H $ )C&t{{m2dkk+6N5OqQ%dkk]35 5w!"%%rcf|jddk(rd|jdSt| |S)NrrzNLA_POLICY_NESTED_ARRAY(r)r9rAr7r)r(rrJs rrzTypeIndexedArray._attr_policy/s: 99Z F *-d.E.E-FkR Rw#F++rcF|jdtvrdt|jdddS|jddk(r!d|jvrd|jddS|jddk(rd |j d St d |jdd ) Nrr;rrrrXz.type = YNL_PT_BINARY, .len = rrrz Typol for IndexedArray sub-type  not supported, yet)r9rrrr1rArer's rrzTypeIndexedArray._attr_typol4s 99Z G +%gdmmAB.?&@%AD D YYz "h .;$++3M3DKK 4L3MRP P YYz "f ,3D4K4K3LGT T>tyy?T>UUhij jrcZdg}d|jddddd|jdd g}|d|fS) Nzconst struct nlattr *attr2;attr_z = attr;z'ynl_attr_for_each_nested(attr2, attr) {z, if (__ynl_attr_validate(yarg, attr2, type))z return YNL_PARSE_CB_ERROR;z n_rrrB)r(ryrrrs rrzTypeIndexedArray._attr_get>sL34 T[[M2>D5DKK=,  $ **rc |jjd|jd|jtvr|j}|jj d|d|j d|jjd|d|d |j d |jjn|jd k(rwd |jvri|jjd|d|j d|jjd |d |j d|jd dn|jdk(re|jjd|d|j d|jj|jd|d |j d ntd|jdd|jjdy)Nz!array = ynl_attr_nest_start(nlh, rrrrrrz (nlh, i, rrrrXzynl_attr_put(nlh, i, z[i], rz_put(nlh, i, &zPut for IndexedArray sub-type rrzynl_attr_nest_end(nlh, array);) rrr6rrrrErr1rArer9rs rrzTypeIndexedArray.attr_putHs 3DNN3C2FG ==G #}}H EE  %5cU)DKK=PV#W  X EEGGmH:Yse2dkk]%P Q EEOO  ]]h &;$+++E EEGG&se9T[[MH I EEGG+C54;;-uT[[Q\E]D^^`a b ]]f $ EEGG&se9T[[MH I EEGGt../~cU"T[[MQVW X'(S1 3 ,D,C,C+DFK%cU"T[[M;= *d**r)r*r+r,r8rrrrs@rrr|s1  +rrceZdZdZdZdZy)rc|d|_|j|vr-||j|_d|j_d|_yd|_d|_y)NrTF)rr9r> _external)r(msg_attrr:s rr8zSelector.__init__sMZ( 99  +DI$(DII !"DNDI!DNrc||_yrLr)r(r9s rset_attrzSelector.set_attrs  rc|jSrL)rr's rrzSelector.is_external ~~rN)r*r+r,r8rrr&rrrrs "rrc<eZdZ d dZdZdZdZdZdZdZ y) StructNc||_||_|j||_||ng|_g|_d|_|rdt|z|_||_|du|_ |jt|k(rt|j|_ n t|jdz|z|_ d|jz|_ |jr#||jvr|xjdz c_ |jdz|_t!|_d|_d|_d|_d|_g|_t/|_|2|D],}|j,j3||j|f.n;|jD],}|j,j3||j|f.d}d|_|j,D]6\} } | j6|k\r| j6}| |_| |j0| <8y)Nr5r r rFr)rB space_namerMr: _inherited inherited fixed_headerrsubmsgrIrr@ render_name struct_namerCptr_nameset child_nestsr<r=r in_multi_val attr_listdictattrsr attr_max_valr!) r(rBr type_listrrrtmax_valrr9s rr8zStruct.__init__s $((4 '0'<)"   )GL,A AD  4' ;;'*- -&v'8'89D &v'8'83'>'KLD $t'7'77 ;;:6    # ((4/ 5  !V  %%q$--*:&;=]]%%q$--*:&;=# ..JD$zzW$**$(!#DJJt  )rc#8K|jEd{y7wrLrr's r__iter__zStruct.__iter__s::s c |j|SrLr!r(keys r __getitem__zStruct.__getitem__szz#rc|jSrL)rr's rrzStruct.member_listr rc|j|k7r tdt|jDcgc] }t|c}|_ycc}w)Nz*Inheriting different members not supported)rresortedrr)r( new_inheritedrs r set_inheritedzStruct.set_inheritedsB ??m +HI I.4T__.EF.E'!*.EFFsA cg}|jD]L\}}t|ts|jj s2|j |jN|SrL)rrVrrrr)r(selsrr9s rrzStruct.external_selectorssI..JD$$/DMM4M4M4O DMM*) rcP|jD]\}}|jsyy)NTF)rr)r(r r9s rrzStruct.free_needs_iters(~~GAt##%&r)NNNN) r*r+r,r8r"r&rr+rrr&rrr r s-HL(,-$^G rr c(eZdZfdZfdZxZS) EnumEntryc t||||||r"|j|jdzk7|_n|jdk7|_|jxs|jddk(|_d|_t |dy)Nrrr0r$rE)r7r8r! value_changeenum_setrErH)r(r3yamlr value_startrJs rr8zEnumEntry.__init__sv 4{; !%tzzA~!=D !%qD  --Qv1F'1Q hrc|jtt|jj|j z|_yrL)r&r7rr3 value_pfxrrEr)s rrfzEnumEntry.resolve s0  dmm55 AB rr*r+r,r8rfrrs@rr0r0s  CCrr0c*eZdZfdZdZdZxZS)EnumSetct|jdz|dz|_d|vr5|dr(dt|dz|_|j|_nd|_nd|jz|_|jr|j|_nd|_|j d|jd|dd|_|j dd|_|j dd|_t|)||y) Nr r enum-nameenum rrcr\z enum-cnt-name) rr@rr6r'r;r7r\ enum_cnt_namer7r8r(rBr4rJs rr8zEnumSet.__init__s"6#4#4s#:T&\#IJ $ K !(74 3D+E!E!%!%$t'7'77DN >>!^^DN"DN!-F4E4E3FaV ~UV1WXdhhx. %TXXot< &rct||||SrL)r0)r(entry prev_entryr5s r new_entryzEnumSet.new_entry(suj+>>rcHt|jjDcgc]}|jc}}t |jjDcgc]}|jc}}||z dzt |jk7ry||fScc}wcc}w)NrNN)r,r5valuesr!r-r2)r(rr0r1s rr/zEnumSet.value_range+sDLL$7$7$9:$9q177$9:;T\\%8%8%:;%:AGG%:;< #:>S. .Dy ;;s BB)r*r+r,r8rCr/rrs@rr:r:s'.?rr:c*eZdZfdZdZdZxZS)AttrSetct||||jd|vr|d}nE|j|jk(r|jdz}n|jd|jd}t ||_t |jjd|j d|_ t |jjdd|j d|_ nx|j|jj |_|j|jj|_ |j|jj|_ d|_ t|dy) Nrcz-a-r z attr-max-namer-z attr-cnt-namerrE)r7r8rNrr@rrdr4r;max_namecnt_namerMrErH)r(rBr4rrJs rr8zAttrSet.__init__6s5 & >> !$=)fkk)''%/**+3tyyk;&s|D #DIIMM/dFVFVEWWZC[$\]DM#DIIMM/RHXHXGYY\C]$^_DM%//?KKD ",,T^^<EEDM",,T^^<EEDM hrct|j|_|jtvr|xjdz c_|j|jjk(rd|_yy)Nr r[)rrrErFrBr's rrfzAttrSet.resolveLsNdii( ;;%  KK3 K ;;$++,, ,DK -rc&|dtvrt|j|||}n|ddk(rt|j|||}n|ddk(rt |j|||}n|ddk(rt |j|||}nc|ddk(rt |j|||}nA|ddk(rgd|vrt|j|||}n|jdtvrt|j|||}nt|j|||}n|dd k(rt|j|||}n|dd k(rt|j|||}n|dd k(r5d|vr1|dd vrt|j|||}ndtd |d|ddk(rt|j|||}n2|ddk(rt!|j|||}ntd|dd|vr|drt#|j||||}|S)Nr0unusedpadflagrrr}r bitfield32r indexed-array)rrroznew_attr: unsupported sub-type znest-type-valuer4zNo typed class for type multi-attr)rrrBrrrDrMr{r;rrkrrrrerrr)r(elemr!rs rnew_attrzAttrSet.new_attrSs <7 "4;;dE:A &\X %4;;dE:A &\U " T47A &\V #dD%8A &\X %4;;dE:A &\X %4$T[[$eD*%0)$++tT5It{{D$> &\\ )t{{D$>A &\V #dD%8A &\_ ,t1CJ#<<$T[[$eD"A$zBRAS TUU &\. .!$++tT5AA &\] *t{{D$>A6tF|nEF F 4 D$6dkk4ua@Ar)r*r+r,r8rfrUrrs@rrHrH5s ,%rrHc.eZdZfdZfdZdZxZS) Operationc`dD]"}dD]} |||jdg$t| ||||t |j dz|j z|_d|vxrd|dvxr d|vxrd|dv|_d|_ d|_ t|d y#t$rYwxYw) N)dodumpeventr<r= attributesr rYr<rZFr6) setdefaultKeyErrorr7r8rr@rr dual_policyhas_ntfr6rH)r(rBr4 req_value rsp_valuemoderrJs rr8zOperation.__init__|s+D1 Jy)44\2F2, y)<"6#4#4s#:TYY#FG DLDY$t*-DH D.FY$v,-F  k" sB!! B-,B-c|jt|js2|jjt |j z|_y|jjt |j z|_yrL) r&r7is_asyncrBrrrr6async_op_prefixr)s rrfzOperation.resolvesV  }}![[22WTYY5GGDN![[887499;MMDNrcd|_yrQ)rar's r mark_has_ntfzOperation.mark_has_ntfs  r)r*r+r,r8rfrirrs@rrWrW{s#,NrrWc(eZdZfdZfdZxZS) SubMessageclt|||t|jdz|dz|_y)Nr r)r7r8rr@rr?s rr8zSubMessage.__init__s3 &"6#4#4s#:T&\#IJrc8|jtyrL)r&r7r)s rrfzSubMessage.resolves  rr8rs@rrkrksK !!rrkceZdZfdZfdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZdZdZxZS)FamilycVd|_t|dd|_t|dd|_t|dd|_t|dd|_t|dd|_t|dt|!||t|jjd|jd d z|_ t|jjd |jd d z|_ d |jvrg|jd <d|jvr|jd|_nd|jd|_|jj!dr0|jj#dr|jdd|_y|j|_y)NrErrgmcgrpsrChooks) exclude_opsz c-family-namer _FAMILY_NAMEzc-version-name_FAMILY_VERSION definitionsz uapi-headerzlinux/.h)rErHrrgrqrCrrr7r8rr4r;fam_keyver_key uapi_headerr@ startswithruapi_header_name)r( file_namersrJs rr8zFamily.__init__sg hk"#'( h h g  <tyy}}_dii>OR`>`ab tyy}}-=tyy?PSd?def  )')DIIm $ DII %#yy7D !''8;D     & &x 0T5E5E5N5Nt5T$($4$4Qr$:D !$(OOD !rcz|jtt|j|_d|j dvr!t |j dd|_n t |j ddz|_d|j dvr!t |j dd|_n|j|_|j jddgi|_ t|_ dD]l}t|j|<d D]N}t|j||<t|j||d <g|j||d<Pnt|_t|_|j!|j#|j%|j'|j)|j+|j-|j jd d |_|j.d k(r|j1yy)Nrc operationsrz-cmd- async-prefixz mcast-groupsrrprepostrYrZrz kernel-policysplitglobal)r&r7rr@rEr4rrrgr;rqrrrr root_setsr _mark_notify_mock_up_events_load_root_sets_load_nested_sets_load_attr_use_load_selector_passing _load_hooks kernel_policy_load_global_policy)r(whenop_moderJs rrfzFamily.resolves  doo. DIIl3 3$TYY|%<]%KLDN$TYYv%6%@ADN TYY|4 4#*499\+B>+R#SD #'>>D iimmNVRLA V #D#vDJJt ),0F 4 )365 4 )%046 4 )&1*$#'6        ##% !YY]]?GD    )  $ $ & *rct||SrL)r:r(rTs rnew_enumzFamily.new_enumtT""rct||SrL)rHrs r new_attr_setzFamily.new_attr_setrrct||||SrL)rW)r(rTrbrcs r new_operationzFamily.new_operationstY ::rct||SrL)rkrs rnew_sub_messagezFamily.new_sub_messages$%%rc |jdk(S)Nz netlink-rawprotor's rrzFamily.is_classicszz]**rc|jjD]'}d|vs|j|dj)y)Nnotify)msgsrFopsrir(rws rrzFamily._mark_notifys9))""$B2~H&335%rcZ|jddD]}d|vsdd|ddii|d<y)Nrrrr[r=r]rY)r4rs rrzFamily._mock_up_eventssB))L)&1B"}$bk,&?42rcn|jjD]\}}d|vr t}t}dD]`}||vr*d||vr#|jt||dd||vs6d||vs>|jt||ddbd|vr |jt|dd|d|jvr||d|j|d<|j|ddj||j|ddj|y)N attribute-setrr<r]r=r[r\)ritemsrupdater)r(op_namerw req_attrs rsp_attrsrs rrzFamily._load_root_setss599??,KGRb(II)b=Y"W+%=$$SGY)? )M%NOb=W7 %;$$SGW)=l)K%LM * "}  R[%>!?@/"$..8BKV_6`r/23r/23I>EEiPr/23G<CCIN%-rcDt|jj}t}t |dz}t |D]}t |dk(ry|j d}d}|j|jD]m\}}d|vr|d}nd|vr |j}n"|j|jr<||vsA|jj |} | |j|<d}n|r|j||j|y)NrTr3r4F) rrrkeysrr2rpoprMr sub_messageraddr) r( pns_key_list pns_key_seenroundsr rfinishedrrIr}s r_sort_pure_typeszFamily._sort_pure_types%sD4499;< u \"a'vA< A%##A&DH>>$/5574&$.!"56F"d*!--F++F3==-!5599$?F5;D,,T2$H!8"  &##D)3rct}|d}||jvr:||jvr:t||||j d|j|<nt d|d|vr7||jvr t d|j t|dn|ddk(r|jd |j|j||S) Nr3 fixed-header)rrz2Using attr set as root and nested not supported - rz8Inheriting members to a space used as root not supportedr0rRidx) rrrr r;rerrr+)r(rinheritrIs r_load_nested_set_nestzFamily._load_nested_set_nestEs%)*  'T55547(,(@B((0PQWPXYZ Z 4 ' Z[[ NN3tL12 3 &\_ , KK    (66w? rc|j|d}|j}g}|jjD]N\}}||d}d|vr|d|ddz}d|vr |d|diz}nd|vr |d|ddz}nd |d <|j |Pt |||jd z|jzd z|d |j |<||jvrt||| |j|<|S)Nr4)rrbrr)r0r3rr)r0r}rPr0r )rzname-pfxr])r) sub_msgsrformatsrrrHrMrr )r(rrrIrrfmtr9s r_load_nested_set_submsgzFamily._load_nested_set_submsgZs1tM23--/ID#&*D#%"),_)="S(nc..ACCD3&$!.1 &V LL '0*") C$))3c90 " v 11 1/5dF6/RD $ $V , rc8t|jj}t|jj}t |r|j d}|j |jD]Y\}}d|vr|j|}nd|vr|j|}n3||vs8|j||j|[t |r|jjD]\}}|j |jD]\}}d|vr|d}nd|vr |j}nd}|s&||dvrd|j|_||dvrd|j|_|j!sm|jj#|} d| _|j't)|jjD]\} } |j | jD]\} }| | j*vrd| _d|vr|d} nd|vr |j} n7| j*j| |jj#| } | sp| j,s%| j*j/| j*| xj| jzc_| xj| jzc_|j!sd| _|j'y)Nrr3r4r<Tr=)rrrrrr2rrMrrrrrrrr<r=rhr;rrreversedrrr)r(attr_set_queue attr_set_seena_setr9rrIroot_set rs_memberschildr:r}r child_names rrzFamily._load_nested_setssdnn1134DNN//12 .!"&&q)E"nnU399; d&$.!77=F"d*!99$?F."))&1!%%f-<.!%)NN$8$8$: Hj"nnX6<<> d&$.!"56F"d*!--F!Fz)44CG008@z'22AE008>((* $ 8 8 < >(399;4v111'+F$&$.!%&9!:J"d*!%!1!1J""&&z20044Z@ ??**11%2C2CDMMV^^3MKK6<</K((*-1*'<!K, rc|jjD]n\}}|jr(|jD]\}}|j |j sG|jD]\}}|j p|jjD]Y\}}|j|jD]4\}}||dvr|j ||dvs%|j 6[y)Nr<r=) rrr<rrRr=rTrrM)r(r r}rrrr9rs rrzFamily._load_attr_uses11779IAv~~$002FAsOO%3||$002FAsMMO3 :%)NN$8$8$: Hj"nnX6<<> d:i00$$&:g..NN$ ?%;rcfd}|D]\}}j|jD]\}}d|vr|d}nd|vr |j}n"jj |}|j D]U}|j j|vr.j||j } |j| Ltdy)Nc3KtjjD] \}}||f jjD] \}}|df ywrL)rrrr)kvr r(s r all_structsz2Family._load_selector_passing..all_structssW !9!9!?!?!AB1d C,,.1g /sAAr3r4z7Passing selector thru more than one layer not supported) rMrrrr;rrrre) r(rr:r}r rrrrsel_attrs ` rrzFamily._load_selector_passings  !, Hf>>(399;4&$.!%&9!:J"d*!%!1!1J0044Z@ % 8 8 :H}}x(@@#'>>(#;HMM#J ))(3'(abb !;<!.rct}d}|jjD]k\}}|s d|vr||d}||dk7r tddD]?}||vs||j d}|s|j |j dgAmg|_||_|j|D]"}||vs|j j|$y)Nrz1For a global policy all ops must use the same setrr<r]) rrrrer;r global_policyglobal_policy_setrMr)r( global_set attr_set_namerrwrrr9s rrzFamily._load_global_policysU  88>>+KGRb($ "? 3 ? 33 STT)b=W+//)4C"))#'',*CD *," !.NN=1Dz!""))$/2rcH|jjD]}dD]~}||vrdD]r}|||vr |||}||j||dvr+|j||dj||j||dj |ty)Nrrrrr)rrFrrrr)r(rwrrrs rrzFamily._load_hookss((//#B)"$+D2g;. g;t,Dtzz$/8?? JJt$W-e488>JJt$W-f5< @% c004 Crroc eZdZddZdZdZy) RenderInfoNc||_|j|_||_||_||_|r |j nd}d|_|rU|j rI|j |j k7r0|jrdt|d|_n tdd|_ d|_ |dk7rMd|vrId|vr7d |dvd |dvk7rd|_ n.d |dvr'|dd |dd k7rd|_ nd|_ d|_ ||_ |js |d |_ d|_|rt|j|_n%t||_||j"vrd|_||_t'|_|d k(rd|vrdnd}d D]?}|sg} |||vr |||d } t+||j|| |j(|<A|dk(r-t+||j||dd |j(d <yy)Nzys->family->hdr_lenrr&Per-op fixed header not supported, yetTFrYrZr=rrr\r])rrr[)rBnlibrrrrwr fixed_hdr_lenrrretype_consistent type_onesider:type_name_conflictrrrCrrr}r ) r(rrBrrwrr: fixed_hdrop_dirrs rr8zRenderInfo.__init__s ''   ')BOOt 2 "//&"5"55$$&+9'):L9MQ)OD&#$LMM $! d?v|rzr$x'W6 -BC+0D(4(RXg->"V*WBU-U+0D('+$$(!  }}/DM"' $RWW-DN$X.DN6==(*.'f h "bjdfG*F R[( "7 F 3L AI&,VT]]:C7@'B F# + g #)&$--7@46wK 4M$ODKK  rct|j|jdk(xr|jdjduS)Nrr<)r2r}rrr$s r type_emptyzRenderInfo.type_emptyOs?4;;s#--.!38 KK " / /4 7 8rcf|jdk(xr!|dk(xr|jjS)NrYr<)rrBr)r(rs r needs_nlflagszRenderInfo.needs_nlflagsSs-||t#[ Y(>[4;;CYCYC[[rrL)r*r+r,r8rrr&rrrrs:Ox8\rrc~eZdZddZdZdZedZddZdZ ddZ dd Z dd Z dd Z d Zdd ZdZdZdZy) CodeWriterNc||_||_d|_d|_d|_d|_d|_| tjj|_ ytjd|_ ||_ y)NFrw+)r _overwrite_nl _block_end _silent_block_ind _ifdef_blockossysstdout_outtempfileNamedTemporaryFile _out_file)r(rout_file overwrites rr8zCodeWriter.__init__Xsc #"     DI 33D9DI%DNrc$|jyrL)close_out_filer's r__del__zCodeWriter.__del__gs rc|jtjjk(ry|jj |j s`tj j|jr7tj|jj|jdryt|jd5}|jjdtj|j||jj!dddtjj|_y#1swY)xYw)NF)shallowrr)rrrrflushrpathisfilerfilecmpcmpropenseekshutil copyfileobjclose)r(rs rrzCodeWriter.close_out_filejs 99 %  277>>$..#A{{499>>4>>5I $..$ '8 IINN1    tyy( 3 IIOO (FFMM ( 's AEE cp|jdxs$|jdxs|jdS)Nrwhilefor)r})clsrs r_is_condzCodeWriter._is_condxs.t$Z(@ZDOOTYDZZrcn|jrId|_|jdrd|z}n+|jjd|jzdz|j r"|jjdd|_|j}|ddk(r|d z}|j r|d z }|jd xrtj||_|xj |jdk(zc_|d d k(rd }|r||z }|jjd|z|zdzy) NFrz}  }  r:rrr#) rr}rwriterrrrrrstrip)r(radd_indinds rrz CodeWriter.p|s ??#DOv&d{ tyy 05 89 88 IIOOD !DHii 8s? 1HC    1HC!]]3/MJ4G4G4M djjlf44 7c>C  7NC s T)D01rcd|_yrQ)rr's rrz CodeWriter.nls rcd|r|dz}|j|dz|xjdz c_y)Nrrr)rrr(rs rrzCodeWriter.block_starts+ #:D tcz Q rc|r |ddvrd|z}|xjdzc_d|_|sB|jr.|jj d|jdzzdzd|_y|j d |zy) Nr>rrrrFrrTr)rrrrrrrs rrzCodeWriter.block_endsp DG:-:D Q   A 6 >?"DO FF3: rc|j}d}|D]>}t|t|zdk\r|j|d}|r|dz }|d|zz }@|j|y)NrOz r)rr2r)r(docindentwordsrwords rwrite_doc_linezCodeWriter.write_doc_linesh D4y3t9$*t DLD C$J D  t rc |sdg}|r6|jd|jd|z|jd|}|ddk7r|dz }||dd j|d |z }t|d kr|j|y|}t|d kDr|j|d }n |ddk7r|dz }||dzz }dt|dzzdt|dzzz}t|t|z } ||dz }d} | t|krdt|t|| z} |ddk(r| | z } | dkDr|j|dz|}n|d z }||| z }| dz } | t|krd|j|d z|zy)Nvoid/*z * rrrr(rrPr[rrrLr)rrr2) r(qual_retrrr r^onelinerr delta_indrnext_lens rwrite_func_protzCodeWriter.write_func_prots8D  FF4L FF53;  FF5M B<3  sNGdV1TYYt_-Qvh77 w<"  FF7O   q6A: FF1IA b\S HA TCZc!fk"SCFQJ%77FSX%  T!W  #d)m1vDG ,Htt|I%"}q3wT  aLA FA#d)m q3w rc|syt|tur|g}|jtd|D]}|j ||j y)NT)r%reverse)r0r]sortr2rr)r(rrs rwrite_func_lvarzCodeWriter.write_func_lvarsJ   s "$JC.C FF3K  rc|j||||j|j||D]}|j||j y)N)r-rr)r)r1rr5rr)r(r-rrrrrs rrzCodeWriter.write_funcsS hTE   3D FF4L rcvd}|D]"}t|d|kDst|d}$|dzdzdz}|D]}d|dz}|d|t|dz dzdzzz }t|dtur|t|dz }n"t|dtur|d|dzdzz }|j |y)Nrr+#define rr")r2r0rr]r)r(defineslongestdefiners rwrites_defineszCodeWriter.writes_definessF6!9~'fQi.aKA%*Fq )D DWs6!9~59a?@ @DF1I#%F1I&fQiC'fQi#-- FF4Lrc &t|Dcgc]}t|dc}}|dz }|dzdzdz}|D]R}d|dz}|d|t|dz dz dzdzzz }|dt|dzdzz }|j|Tycc}w) Nrrr+rrr9z= r)r-r2r]r)r(rrr<rrs rwrite_struct_initzCodeWriter.write_struct_inits'2'Qs1Q4y'231 aKA%*CQr@rFr&rrrrWs_ & "[[22  (!T   *rr> s8rks16rlrmrnrorpsintuint_rsp_reqr[)r=r<r[_list_ntf)rYrZrr[>"rYrr rautorcasecharrr#gotolongr&breakr_floatshortunionr doubleexterninlinereturnsignedsizeofstaticr}switchrXtypedefcontinueregisterunsignedvolatilec|dk(ry|dk(ry|S)Nr=r<r&rs rrdirrjRsGI rcbd|j}|jsnz|jdk(r|t|z }n]|dk(r|dz }|jsG|dz }nA|jr'|r|t|z }n%|t |jz }n|dz }||rdndz }|j j|S)Nr rYr<rO_dumprNrP)rrdirection_to_suffixrrop_mode_to_wrapperrBrE)ryrrr^s rrrZs F :: t (345  ! f F??'!!!!4Y!? @AF0<D  At_  Q *LLcLEEGNN78J8J7K7SNTDD<Awa !DD9V''( 12LLcLEEGrcB|jd|jdy)Nz$extern const struct ynl_policy_nest r)rr)rr}s r put_typol_fwdrsDD /0B0B/C6 JKrc*|jr t||y|jj}|j d|j d|d|j D]\}}|j||jd|j|j d|j d|jd|d |jd |j d |jd|jy) Nr}z_policy[z + 1] =rrrrrrrr) rrr:rJrrrrrrr)rr}type_maxr rs r put_typolrs }}V$''HNN78J8J7K8T\S]]deNf$$&3 r'LLcLEEGNN78J8J7K7SNTDD<z #$DD9V''( 12LLcLEEGrc d|g}|r|jdz|zg}|jd|d||j|r&|jdk(r|j |d|d|j d|d |d |d |j d |j d |d|d|j |j y)Nzint rrO_strr$z = ffs(z) - 1;rz < 0 || z >= (int)YNL_ARRAY_SIZE(r return NULL;return rz];)r'r1rr0rrr)rrmap_namearg_namer#rs r_put_enum_to_str_helperrs8*  D $x/0~+d';TBNN  W$ z & 12DD4z(+CH:R PQDDDD78*AhZr *+LLNEEGrcJ|jd|jddgdy)NrO_op_strzint oprr^)r1rErBrs rput_op_name_fwdrs'~&--'@8*UXYrcF|jd}|jd|d|jjD]\}}|js|j |j|k7r|j d|dE|j|jk(r#|j d|jd|d |j d|jd|d |jd |jt||jd z|d y) N _op_strmapstatic const char * const [] =rz // skip "z", duplicate reply valuer] = "",r_oprw) rErrrrc rsp_by_valuerrbr6rrr)rBrrrrws r put_op_namers-- +HNN4XJdCND{{((*  <<""2<<0B6y )ABC||r||+qeG9B78qeG9B78+LLcLEEGB  5xFrch|jdzg}|jd|jd|dy)Nz valuerOrrr)r'r1r)rBrr#rs rput_enum_to_str_fwdrs8 NNX % &D~$*:*:);4'@$sSrc\|jd}|jd|d|jjD].}|j d|j d|j d0|jd|jt||j|d | y) N_strmaprrrrrrrr!)r#) rrr5rFrr!rrrr)rBrr#rrAs rput_enum_to_strrs""#7+HNN4XJdCND$$& q U5::,b 12'LLcLEEGB 0 0(G$Orcg}d}d}|jD]-\}}||jdk(z}||jdk(z}/|r|jd|r|jd|S)NFrRrzstruct nlattr *array;r)rr0r}r)r}r has_array has_countr rs rput_local_varsrsJII$$&3SXX00 S&&(G33 '12+, rcdd|jdg}|jjd|jd||y)Nzstruct nlmsghdr *nlhzunsigned int attr_typeobjr_putr)rrr1r)ryr}r^ func_argss rput_req_nested_prototypersN')OO$C(*IEE%F$6$6#7t!_hdr, r[rrzynl_attr_nest_end(nlh, nest); return 0;) rrrrrrrr5rrrrr)ryr}rrrrr rs rput_req_nestedrsbJJ }}01GH ,'f112!4 B9+RPQ4YKrBC.((JR3EEEE*%  $$&3 R'}} /0EEHHJEEGGKEEOOEEHHJrc |jr|dgz }|jr |jrd|jd}nhd}ned}|jj|jjk7r6|jj rd|jd}n t dt }t }d}t }|jD]\} } | d d k(rd | vr| d d vr1|jd | jd|j| nM| d tvr1|jd | jd|j| nt d| d d| vr|j| |d| vz}|d| vz} | j|d\} } } || r t | n t z}|t|z }|s|r|jd|r"|jd|jd||z} t| D]$} |jd|| jd&|jj!|jj#||D]}|jj%||jj'|j(D]$} |jj%d| d| d&|jr|jr|jj%dnQ|jj r|jj%dn|jj%d|jj%d|jd t| D]p} || } |jj%d!| jd"|jj%d#|j*j,d$| j,d%r|jj'|jj!|&|jj%d'|jj'd(}|jD]\} } | j/|d)|*}|| z}!|jj1|jj't|D]} || } |jj!d+| jd"&|jj%d| jd,| jd-| jd |jj%d.| jd/| jd|jj%d0d| vr)|jj%d1| j2d2|jj!d3| jd"&d| vrn|jj%d4| jd5|jj%d6| j2d7|jj%d8n| j4tvr7|jj%d| jd9| j4d:nh| j4d;k(rHd<| j6vr:|jj%d=| jd>| j6d<d?nt d@| dA|jj%dB|jj1|jj1|jj't|D]A} || } |jj!d+| jd"&|jj%d| jd,| jd-| jd |jj%d.| jd/| jd|jj%d0d| vr)|jj%d1| j2d2|jj!|&|jj!dC| j8d"&d| vro|jj%d4| jd5|jj%d6| j2dD|jj%d8n,| j:tvr8|jj%d| jd9| j:d:n| j:d;k(rdE| vr|jj%dF|jj'|jj%dG| jdH|jj%dI| jdJ|jj%dK| jdLn| j:dMk(r|jj%dN|jj'|jj%dO|jj%d| jdP|jj%d| jdQ|jj%d=| jdR|jj%d| jdSnt dT| j:dU|jj%dB|jj1|jj1|jj1D|jj'|jr|jj%dVn|jj%dW|jj1|jj'y#t $rY wxYw)XNrz2ynl_attr_for_each_nested_off(attr, nested, sizeof(rz&ynl_attr_for_each_nested(attr, nested)z7ynl_attr_for_each(attr, nlh, yarg->ys->family->hdr_len)z$ynl_attr_for_each(attr, nlh, sizeof(rFr0rRr>rrrz = NULL;zNot supported sub-type rSr3r4r[zint i;struct ynl_parse_arg parg;parg.ys = yarg->ys;rz = 0;zdst->rArzhdr = ynl_attr_data(nested);zhdr = ynl_nlmsg_data(nlh);z_hdr, hdr, sizeof(rz if (dst->rz9return ynl_error_parse(yarg, "attribute already present (rz)");rz(unsigned int type = ynl_attr_type(attr);Tdst)rzif (n_z = calloc(n_z, sizeof(*dst->z dst->_count.rzi = 0;rrz$ynl_attr_for_each_nested(attr, attr_zparg.data = &dst->z[i];rz)_parse(&parg, attr, ynl_attr_type(attr)))rz[i] = ynl_attr_get_r?rrXz memcpy(dst->z[i], ynl_attr_data(attr), rz#Nest parsing type not supported in rzi++;zif (ynl_attr_type(attr) == z_parse(&parg, attr))r}z%size_t len = ynl_attr_data_len(attr);zif (len > sizeof(dst->z[0]))zlen = sizeof(dst->z[0]);z memcpy(&dst->z[i], ynl_attr_data(attr), len);rrerdz2[i] = malloc(sizeof(struct ynl_string) + len + 1);z[i]->len = len;z'[i]->str, ynl_attr_get_str(attr), len);z[i]->str[len] = 0;zNest parsing of type rrreturn YNL_PARSE_CB_OK;)rrIrwrBrrerrrrErrrrrr)rrr5rrrr:rrrrArr1r6r0)ryr}rr iter_lineindexed_arrays multi_attrs needs_pargvar_setraspecr l_vars all_multirrgoods r _multi_parser1s  |n$  }}   LVM`M`LaacdI@IM 55  !7!7 7yy##%B6CVCVBWWYZ  HIIUN%KJeG((* U =O + e0CZ $66!!$>u||nH"UV""3'z"g-!!$>u||nH"UV""3'"9% :K9L MNN 5 OOC )U22 mu,,   ??2r2LAq& fs6{#% 7G#+($w-J(#67/0,Ii OF3K,>,>+?uEF!EEEE*%  EEHHJ %uCuA&'  == EEGG2 3 YY ! ! # EEGG0 1 EEGGR S 1&2E2E1FcJKi s  )ELL>+, KFOOL`L`Kaabchcmcmbnnrst! EEHHJEE9%EEGG 67EEHHJ E$$&3||BU|3 T' EEOOEEHHJn%s   ~Q78 % ~\%,,u||n\_`a ,u||nE%,,qAB  % ' EEGG)%*B*B)C6J K !Eell^STUV % ' EEGG(d; < EEGGd53344]^ _ EEGG0 1 ^^w & EEGGeELL>))1PQ R ZZ8 # EEGG' ( EEHHJ EEGGU V EEGGeELL>)[\ ] EEGGeELL>9 : EEGGl5<<.0WX Y EEGGeELL>);< =3EJJdata;rrTrrFz (!strcmp(sel, "z"))rr|rrr)parse_rsp_nested_prototyperrrrrrr5rrrrr}rEr) ryr}rrr rrrrrrrrs rparse_rsp_submsgrsr6"5 C7__%cU.9.0J$$&3}}R- 1fVc&k6 'EEEE$z*+EEGG !"EEHHJ E'') cT  "%5dV3?@#&==S#9 :q$"$D EEGGDM%D EEGGDM    ) + EEGGse;szzl%8 9 *EEGGKEEOOEEHHJrcPddg}|jD] }|jd|jz"|jr|j dd|j D]}|jd|z|j jd|jd|| y) Nstruct ynl_parse_arg *yargzconst struct nlattr *nestedzconst char *_sel_rzconst char *selrr_parser) rrrrinsertrrr1r)ryr}r^rrrs rrrs-.0I((*,sxx78+ }}-.C( EE%F$6$6#7v!> !')rc|jr t||St||dd|jdg}g}|j rt ||||y|j j|j jd|j j|j jy)Nr[rconst struct nlattr *attr;dst = yarg->data;r) rrrrrrrrrrr)ryr}rrs rparse_rsp_nestedr s }}F++r6"5.__%%679JJ RZ8      rc*d|j|jvr|jdk7ryddg}t|d|ddg}dg}|jj d t |d|d ||j djrt||j d||y|jj|jjd |jj|jjy) Nr=r[zconst struct nlmsghdr *nlhrrz *dst;rrrrr) rwrrrr1rr}rrrrrr)ryrrrrs r parse_rsp_msgr sbeeBJJ''BJJ',A--/Ir7%89@.0J%&JEE%Ib'$G#H!OQZ[ yy%%'R7+ZD  )*   rc d}d}d}gd}d|j|jvr d}d}|t|t|dgz }|jdj r|d d gz }|t |jdz }t||d |jj|jj||jjr4|jjd |jjdnN|jjd|jj!d|jjd|jjd|jdj"d|jjd|j$dd|j|jvr6|jjd|jdj"d|jj|jdj rk|jjd|jjd|jjd|jj|jdj'D]\}}|j)|d|jjd|j|jvr|jjd|jjd|jjdt+|dd|jj,4|jjd|jjdn3|jjd|jj.d|jj|jjd |jjd!d|j|jvr|jjd"n|jjd#|jj|jjd$|d|jjd|j|jvrj|jjd%|jjt1|t|d|jjd$|d|jj3y)&N0z-1r<)z6struct ynl_req_state yrs = { .yarg = { .ys = ys, }, };struct nlmsghdr *nlh;int err;r=rspNULLz *rsp;size_t hdr_len;rFrrznlh = ynl_msg_start_req(ys, z, req->_nlmsg_flags);znlh = ynl_gemsg_start_req(ys, r, 1);ys->req_policy = &rys->req_hdr_len = rzyrs.yarg.rsp_policy = &hdr_len = sizeof(req->_hdr);/hdr = ynl_nlmsg_put_extra_header(nlh, hdr_len);!memcpy(hdr, &req->_hdr, hdr_len);rzrsp = calloc(1, sizeof(*rsp));zyrs.yarg.data = rsp;z yrs.cb = _parse;zyrs.rsp_cmd = zerr = ynl_exec(ys, nlh, &yrs); if (err < 0)zgoto err_free;z return -1;rz err_free:)rwrrrjr}rrrurrr5rBrrr6rr)rrrrrr!rc call_freer)ryret_okret_errrrr r9s r print_reqr/ s FGIJ"%% ##)BY89@AA  yy(((#% % .9!566JB U3EEEE*% yy .ruu.??TUV 01D1D1F0Gr"%%//IZZ_`aEEGG 9!5!A!A B& IJEEGG !1!1 2! 45"%% ## )"))G*<*H*H)IPQEEHHJ yy(( ./ AB 34  99Y'3354 b% 6EEHHJ"%% ## 01 &' )Ib'237;< 55;; " EEGGnRUU__$5Q7 8 EEGGnRUU__$5Q7 8  EEGG ,-EEGGN"%% ##  !  EEHHJEEGGgfXQ  EEHHJ"%% ##   9Ri%89; ''!$%EEOOrc J d}t||d|jjgd}|jdjr|ddgz }d|j |j vr|t|jdz }|jj||jjd|jjd|jd jd |jjd |jjd t|t|d |jjdt|d dd|j j4|jjd|j jdn3|jjd|j j d|jj#|j$j'r4|jjd|j jd nN|jjd|j"j)d|j jd|jdjrk|jjd|jjd|jjd|jj#d|j |j vr|jjd|jdjd |jjd|j*d|jj#|jdj-D]\}}|j/|d|jj#|jjd|jjd|jjd |jj#|jjd!|jj#|jjd"|jjt1|t|d#|jjd$|jj3y)%Nr<Fr)zstruct ynl_dump_state yds = {};rrrrzyds.yarg.ys = ys;zyds.yarg.rsp_policy = &r=rzyds.yarg.data = NULL;zyds.alloc_sz = sizeof(rz yds.cb = Trrzyds.rsp_cmd = rznlh = ynl_msg_start_dump(ys, znlh = ynl_gemsg_start_dump(ys, rrrrrrrrz#err = ynl_exec_dump(ys, nlh, &yds);rzgoto free_list;zreturn yds.first;z free_list:z yds.firstr)rurrr}rrwrrr5rrrrjrr!r6rcrrBrr)rrrrr)ryrrr r9s r print_dumprw sIB U3EEJ yy(((#% % BEE"**%%nRYYy%9:: EE*%EEGG  EEGG%bii&8&D&D%EV LMEEGG #$EEGG$Yr4 ?%C$DB GHEEGGi "gT:;7 CD uu{{ . 134 . 134EEHHJ yy //@CD 1"%%2E2E2G1H255??J[[`ab yy(( ./ AB 34  BEE"**%% $RYYy%9%E%E$FfMN $R%5%5$6a89  yy+779GAt MM"e $:EEHHJEEGG 12EEGGNEEGG EEHHJEEGG  EEHHJEEGGLEEGGIb$y/; 78EEGGNEEOOrc&t||d|dS)Nrrrp)ryrrs rrr sI& 'vcU" 55rc |r t|ddSy)Nrr)rmris r free_arg_namer s"9-ab11 rcft||}|}|jr|dz }dg}d}|r|jrdg}d}|jj d|d|d||jj |jj d |d |d |jjy) Nr r&1zunsigned int nnzstatic inline struct r_alloczreturn calloc(z, sizeof(struct r)rrrrr1rrr)ryrr}rrrcnts rprint_alloc_wrapperr s R #DK s 8D C &%% !EE1+bA!F&/41EEEEGGnSE!1+c BCEEOOrct||}|}|jr|dz }t|}|jj d|dd|d|g|y)Nr r&_freer5rr)rrrrr1)ryrr^rrrs rprint_free_prototyper sb R #DK s  "CEE&TF%.W[MC53Q2R[abrc:t||}|jjd|dd|ddg|jj|jj d|jj |jj y)Nr _set_nlflagsr5 *reqz__u16 nl_flagszreq->_nlmsg_flags = nl_flags;)rrr1rrrr)ryrrs rprint_nlflags_setr s{ R #DEE.4& 0E$TF%02BCEEEEEGG +,EEOOEEHHJrcd|jt|}|s|jr|dz }|jdk(r|js|dz }|j j d|jj||j|r5|j jd|j j|jrB|j j|jdz|j jdD]}d }|jD]_\}}|j|j|}|s%|s|j j d d }|j j|a|sz|j j!d|d |j j|j"D]!} |j jd | d #|jD]\}}|j%||j j!d |j jy)Nr rZrlr5rz__u16 _nlmsg_flags;z _hdr;)r|r2rFr}Trr)rrmrrrrrrBrErrrrrrrrrr) ryrr}r^r meta_startedr r9rrs r _print_typer s29=> ?F ..#  zzVBOO'EEWRYY%5%5$6vh?@  " %&    ##h./  2  ))+GAt'' [AD#EE%%8%4#'L ,  EEOO1[M!3O 43EEHHJ &Q  %%'4 2(EEOOOEEHHJrc8t|||j|yrL)rr}ryrs r print_typer sIryy34rct|d||jr|jrt|d||jj t ||jj |jdk(rC|js7|jD]$\}}|j||jdd&|jj yyy)Nr[rr)r) rr<rrrrfree_rsp_nested_prototyperrrrr:)ryr}r r9s rprint_type_fullr sB ~~&--BF+  !"%   ;;& )>)>!--/4 B RU ;0  .~rcnt|||jj|j|r t |||j dk(rI|dk(rD|j |jD]$\}}|j||j||&|jjy)Nrr<r) rrrrrrr}rrr:)ryrrr r9s rprint_type_helpersr sY'EEHHJ  ""i( {{fi!7yy+779GAt KKBKK%K @:EEHHJrcX|jdryt|dt|dyrz)rrrrws rprint_req_type_helpersr, s% }}YI&r9%rcTd|j|jvryt|dyNr=)rwrrrws rprint_rsp_type_helpersr3 s$beeBJJ''r7#rc |dk(rdnd}|rdnd}|jjd|jj|ddd |jj|d g| y) Nr=rNrOrr[r&rzconst struct nlattr **tbr5rr)rr1rwr)ryrrrr^terms rprint_parse_prototyper9 sq G+VF3DEE&RUU%6%6$7xv"F5$RUU%6%6$7xuEG!%'rc@|jdryt|dyrz)rrrws rprint_req_typerC s }}Yr9rcpd|j|jvryt|d|jdyrzrwr _free_typer}rws rprint_req_freer I s/bjj))r9bii 23rc|jdk(s|jdk(rd|j|jvrd}n|jdk(rd}nyt||y)NrYrZr=r[)rrwrrs rprint_rsp_typer O sP dbjjF2255CT8T w  r9rc|jjt|d|jdk(r)|jj t|ddn|jdk(s|jdk(rz|jj d|jj d|jj d |jj d t|dd |jj t|dd d|jj d|jj t|d|jj y)Nr=rrZz *next;rr[z __u16 family;z __u8 cmd;zstruct ynl_ntf_base_type *next;z void (*free)(z *ntf);Trz! obj __attribute__((aligned(8)));r)rrrrrrrrrws rprint_wrapped_typerY s EEiG457 zzV 9R)*'23 x 2::#8     12 - "g 67w?@EEGGyWD122S TUEEOOOEEHHJW%EEHHJrc|jr6|jjd|jjyy)Nr)rrrrryr}s r_free_type_members_iterri s1  !"   rcZ|jD]\}}|j|||yrL)rr)ryrr}rr r9s r_free_type_membersro s)%%'4 "c3(rcFt|}t||d|jjt ||t ||||r|jj d|d|jj|jjy)Nr[rrr) rrrrrrrrr)ryrr}rs rr r t st  "CYr2EEB'r3' %uB EEOOEEHHJrct|dyr)rrws rrr s R$rct|d|yr)r rs rfree_rsp_nestedr sr2vrcpd|j|jvryt|d|jdyrr rws rprint_rsp_freer s/beeBJJ''r7BIIg./rct|d}t|dd|jj|jj |d|jj |jjdt ||jd|jj d|jj d|jj t|d |jdd |jj d |jj|jj|jj y) Nr=r[rz *next = rsp;z$while ((void *)next != YNL_LIST_END)rz rsp = next;znext = rsp->next;robj.r free(rsp);) rrrrrrrr}rr)ryrs rprint_dump_type_freer sW%HWR0EEEEGGxj &'EEHHJEEABB ' 23EEGGMEEGG  EEHHJr5"))G"4&AEEGGLEEOOEEOOEEHHJrc\t|dd|jjt||jdt |d|jdd|jj d|jj|jjy)Nr=r[rrrrr) rrrrr}rrrrrws rprint_ntf_type_freer! ssWR0EEB ' 23r5"))G"4&AEEGGLEEOOEEHHJrc |r|rt|jry|rd}n|rt|jrd}nd}|rdnd}|j}|r?|jj}|jj r|d|j zz }n |j}|j|d|d|jd |y) Nextern zstatic r[rz = {r zconst struct nla_policy z _nl_policy[z + 1]) policy_should_be_staticrBrrwrr`rrr6)rr}ryrrprefixr^max_attrrs rprint_req_policy_fwdr' sR3FMMB )&--8FFS6F""H uu   55   C"**$ $D!!DDF8+D6X=O=O>t{{*>?   |0G/H -R ;=]^ ` NN  NN"24<. HN I==f.DK,,."'KDD(uU\\N!,- / DD  LLN DDK L DD" # LLN EEG;( 0rcHt| }|r|r|jd|jddddd}||j}|sd}nY|jdk(r5d }|jj D]}d |vr|d z }d |vs|d z }nt |j}|sd nd}|d|d|jd|d} |r|jd| dn|j| dz|sy|j|jdd dD]"} |jdt| gdd$|jdd dD]"} |jdt| gdd$|jdd dD]!} |jdt| dgd#|jdd dD]!} |jdt| dgd#|j|jjD]\} }|jrd |vr2t|jd| d } |jd| d!d"gdd |vsNt|jd| d#} |jd| d!dgd|jy)$Nz/* Ops table for rgenl_small_opsgenl_opsgenl_split_ops)rper-oprr[rrrYrrZz static constr_z struct rz_nl_ops[rr#rz =rrrrr)z const struct genl_split_ops *opsstruct sk_buff *skbstruct genl_info *inforrr&zstruct netlink_callback *cb-nl-z-doitr?r@z-dumpit)r.rr@rrrFr2rErrrrr1rrrf) rBrrrexported pol_to_struct struct_typerrwqualrrrs rprint_kernel_op_table_fwdrF s/77H   !2!2 33 78#3#-"24 $F$8$89 C  ! !W ,Cjj'')2:1HCR<1HC * fjj/C%-~7x }Afmm_HSEK  DD74&" # NNt N , EEG U#D)&1 5'$-MUX  Z2 V$T*62 674=MUX  Z3 U#F+F3 5'$-9:3  H4 V$V,V4 5'$-9:3  H5EEGzz'')  ;;  2:f//0WIUCDD   ud 57OPY\  ^ R<f//0WIWEFD   ud 57TU^a  c*EEGrc t||dy)NTr)rFrs rprint_kernel_op_table_hdrrH^ sfbD9rc t||d|jdk(s|jdk(r|jjD]\}}|jr|j |j dd|jd|jfg}d|vr?|jdd j|dDcgc]}td |zc}fd D];}||vst|jd |d |d}|j|dz|f=|jdk(rot||d|ddd}t|jd |d}|jd|f|jd|jjfd|vr?|jdd j|dDcgc]}td|zc}f|j!||j#dn|jdk(rddddd dd } |jjD]x\}}d D]l}|js||vr|j |j dd|jd|jfg}d|vrpg} |dD](}|dk(r|d!vr |d"k(r|d#k(r| j|*| r<|jdd j| Dcgc]}td |zc}ft|jd |d |d}d$||vr(|j| |d$t||d$f|j|dz|fd%||vr(|j| |d%t||d%fd||vrt||d||dd}|j$rt|jd |d |d}nt|jd |d}|jd|f|jd|jjfd|vr|dngd&|zgz} |jdd j| Dcgc]}td|zc}f|j!||j#do{|j d|j#d'|j'ycc}wcc}wcc}wcc}w)(NFrrr>r)cmdz dont-validatevalidatez | zgenl-dont-validate-rrAr itrrYr<r]rz -nl-policyrmaxattrr$zgenl-rrrpre_doit post_doitrstartdone)rZz dump-strictrZstrictrrzcmd-cap-r)rFrrrrfrFr;rr6rrrrr@r rr@rr`r) rBrrrwrrrrr}cb_names dont_validater$s rprint_kernel_op_tablerVb s3fbE: x'6+?+?8+K!::++-KGR{{ NN266-6 7 NN r||,-G"$ % 575H,J5H-44IA4M,N5H,J!K LO*b="f&7&7%8WIQwir#RSDNNGdND#9:*##x/?(;*,T(9*=l*KM&"3"3!4AgYjIJ$/0 6+>+>+H+HIJ"}SUV]S^4_S^aWWq[5IS^4_)`ab   ) LLcL "3.4    ($. D$+V<>"::++-KGR);;'"3rvvmT:; !2<<01"b($&M0"d?q4K/K$"f,h$%,,Q/ 1% (- =J4L=J5<Y#Z[$56R[(NNHW$5f$=wr'{SYGZ?[#\]7 +#FB,?.0k).D\.RTF~~&&*;*;)S-?S2.S7/S<c|jdsy|jd|jdD]1}t|jd|dd}|j |3|j d|j y)Nrrr#-nlgrp-rrr)rqrrr@rrr)rBrgrpgrp_ids rprint_kernel_mcgrp_hdrr[ st == NN6}}V$F--.gc&k]!DE V %LLEEGrcH|jdsy|jd|jzdz|jdD]>}|d}t|jd|}|j d|zdz|zdz@|j d |jy) Nrrz)static const struct genl_multicast_group z_nl_mcgrps[] =rrXrz] = { "z", },r)rqrrErr@rrr)rBrrYrrZs rprint_kernel_mcgrp_srcr] s == NN>NQaab}}V$6{F--.gdV<= S6\I % ,w 67%LLEEGrctt|sy|jd|jd|jd|jvro|jd|jd|jdd|jd|jd|jdd|jyy)Nzextern struct genl_family z _nl_family; sock-privzvoid z_nl_sock_priv_init(z *priv);z_nl_sock_priv_destroy()r.rrEr kernel_familyrs rprint_kernel_family_struct_hdrra s ' /DD %fmm_K @AEEGf*** uV]]O#6v7K7KK7X6YYa bc uV]]O#9&:N:N{:[9\\d ef +rc2t|syd|jvr|jdd|jd|jdgdg|j |jdd|jd|jdgdg|j |j d |j d |jd |jzd z|jd |jzd z|jd|jd|jd|jdk(r?|jd|jd|jd|jdnM|jdk(r>|jd|jd|jd|jd|jdr>|jd|jd|jd|jdd|jvr`|jd|jdd|jd |jd!|jd"|jd#|jd$y)%Nr_z static voidr_nl_sock_priv_initz_nl_sock_priv_init(priv);z void *priv_nl_sock_priv_destroyz_nl_sock_priv_destroy(priv);zstruct genl_family z_nl_family __ro_after_init =z .name = rz .version = z.netnsok = true,z.parallel_ops = true,z.module = THIS_MODULE,r>z.ops = z_nl_ops,z.n_ops = ARRAY_SIZE(z _nl_ops),rz .split_ops = z.n_split_ops = ARRAY_SIZE(rrz .mcgrps = z _nl_mcgrps,z.n_mcgrps = ARRAY_SIZE(z _nl_mcgrps),z.sock_priv_size = sizeof(),z.sock_priv_init = __z_nl_sock_priv_init,z.sock_priv_destroy = __z_nl_sock_priv_destroy,r) r.r`rrErrr@rrzr{rrqrrs rprint_kernel_family_struct_srcrf sG ' /f*** mr&--8J%K --(ABC#n &  mr&--8M%N --(DEF#n & NN():):(;;WXYDD '# -.DD&.. (3 ./DD DD !"DD $% x' z&-- 12 &v}}oY ?@    ( ~fmm_H 56 *6==/ CD }}V }V]]O; 78 ' l CDf*** )&*>*>{*K)LB OP $V]]O3F GH &v}}o5K LMLLrcd}||vr||r9dt||z}n'|r%||vr!d|jzdzt||z}|j|y)Nr#r=r r)rrEr)rBrrckeyr6 start_lines ruapi_enum_startrj saJC y> 73y>#::J $#+v}},s2WSY5GG NN N#rct|jd|jd}t|jdd|jd}d|d}t|||ddd }|jj D]]}|r d |vsd |vrd } |j |k7rd |j d } |j }|j|j| z|dz }_|j|j||rdnd z|s|j|d ||jd|r|jd|d||jy)Nz cmd-max-nameMAXz cmd-cnt-namerr( - 1)rr<rrr[rrArr[rrr8r) rr;rrjrrFr!rr6rr) rBr max_by_define separate_ntfrJrK max_valuevalrwr^s rrender_uapi_unifiedrr sOvzz.V5E5E4Fc2JKLHvzz.Bv7G7G6H2LMNHH:U#IFB| 4kB Ckk  " X^w"}  88s?288*A&F((C R\\F "# q#EEGDD=Rc 23  zYK ()LLcL xz9+ ./EEGrc|jd}d|jd}d|d}|jd|jt|jdd }|j j D]h}d |vsd |vs d }|jr+|j|k7rd |jd }|j}|j|j|z|dz }j|j|j||rdnd z|s|j|d ||jd|r|jd|d||j|jd}d|jd}d|d}|jd|jt|jdd }|j j D]}d |vrd|d vs d|vsd |vs|j} d |vr d|vr| d} d }|jr+|j|k7rd |jd }|j}|j| |z|dz }|j|j||rdnd z|s|j|d ||jd|r|jd|d||jy)NUSER_MAXrUSER_CNTr(rmr#rz_MSG_USER_NONE = 0,rrYr[rrArr[rr8r KERNEL_MAX KERNEL_CNTz_MSG_KERNEL_NONE = 0,r=r_REPLY) rrrrrrrFr!r6rr) rBrrnrJrKrprqrwr^r6s rrender_uapi_directionalry! s""#8,HF$$%X.HH:U#INNNDDFKK= 34 56 Ckk  " 2:'+FxxBHHOrxxj*hh DD& ' 1HC#EEGDD=Rc 23  zYK ()LLcL xz9+ ./EEG""#:.HF$$%Z0HH:U#INNNDDFKK= 56 78 Ckk  " BJ7bh.8r>WPR] Ib XR%7(k0 FxxBHHOrxxj*hh DDV# $ 1HC#EEGDD=Rc 23  zYK ()LLcL xz9+ ./EEGrc fdt|jd}|jdd}|jd|z|jd|z|j |j |df|j |jdd fg}|j||j g}|d D]L}|jd r|d d k7r#|j|g}|j |d dk(s |d dk(r|j|d}|jrq|jr|jr>|jdd}d|vrd|dz}|j|j|zn'|jd|j|dd|jj!D]<}|jsd|j"zdz|dz}|j|>|jdt%|||d|jd|j&d|dd}|jj!D]D}d} |j(rd|j+| z} |j|j"| zF|jddr|j |jd|d dk(r7t|d z} d|j-d} |j| | znd|j.} t|d!z} | sd"|zd!z} |jt| dz|j| d#zt| zd$z|j1d%&|j |d d k(s|jd|j&d}|j3t|jd'||d|d(gO|r!|j||j |jd)d} |j4j7D]N\}}|j8rd*|j:d$}d+}t%|||j<d,|j7D]U\}}d} |j>|k7rd|j>d} |j>}|d z }|j|j| zW|j7r|j |j|j:| rdndz| s |j|j@d||j1d%&| r!|jd|j@d-||j Qd.|d/v}|jBd0k(rtE||| |n5|jBd1k(rtG||| ntId2|jB|rt%|||d/d34|jJj!D]:}|r d5|vsd6|vsd} d(|vr d|d(d} |j|j| z<|j1d%&|j g}|jLd7D]C}|d}|j3t|jd'|j&d8||gE|j |r!|j||j |jd9|dy):N _UAPI_LINUX__H/r #ifndef r8rversionrrvr\r0r_r#r$z/**r[r  - r'F)r!@z: rrcr rrAz render-maxz/* private: */r8r-rz = (rmrrz c-define-namer!z max-by-definer(rr<rrrunified directionalzUnsupported message enum-model z async-enum)r6rr[rrz-mcgrp-rC)'rr~rrrrzr{r;r>rCr\has_doc has_entry_docr$r6r5rFrErjr@r2 user_valuer7r>rrrMrrNrKr4r!rJ msg_id_modelrrryrerrq)rBrhdr_protr;r_r#r rAname_pfxr^rJrrKrnr r:rprqr9rorwrYrs r render_uapirW sgf&=&=>?rBHS)HDDh DDh EEGv/ 9a 89;GgEEGG & 99X   =G #   g &G EEG =F "eFmw&>==v/D{{||~%%'DDKC}#d5k1%%dnns&:;DDJ%%d5k%%@!\\002E}}!ELL047%,F))#.3U FBv 6yy63D3D2EQuV}oUV0WXH,,.%%"5#3#3#5"67&@FU\\F*+ / yyu-%&=G+&x&'89H #DMMO#4A6GDDG+,#11H&x%'78H##'(?U#:DD*S01DDF*WX->>HI LLcL " EEG 6]g %yy63D3D2EQ0GHH NNGFJJ2:E&M?/K%MN!'N, -u'| '" JJ6M''--/ 8    ))*%0 HMM;?~~'GAtFzzS tzzl!,jj 1HC DD&( ) ( >>  EEG X   "3 ?@ DDH%%&c)5 6 #   DD8H--.a {; < /04"VL%99L i'FB |D    -M:9&:M:M9NOPPF<$8LQ++$$&BX^w"}F"}r'{m1- DD& '' #  G}}V$6{FEEGGi "gT:;7 CDEEGGnRYYw/;;|jd|jd|jd|jd|jdy)Nzconst struct ynl_family ynl__familyr#rz!static const struct ynl_ntf_info z_ntf_info[] = rrrr[zInvalid notification rAz .name = "rz.is_classic = true,z.classic_id = protonumrz.hdr_len = sizeof(struct rez5.hdr_len = sizeof(struct genlmsghdr) + sizeof(struct z%.hdr_len = sizeof(struct genlmsghdr),z .ntf_info = z _ntf_info,z .ntf_info_size = YNL_ARRAY_SIZE(z _ntf_info),)rErntfsrrrrrerrrrr;rr) rBr prototypesymbol ntf_op_namentf_oprwryrs rrender_user_familyr sH+FMM?' BF wvha ! {{ ? n]^#);;#4#4#6 K6!ZZx 01FFBAF"FFFGD 7+ EFF "2v .$7"::++-KGRb BG"DD< b )*   #$ vzz*56a 89     DD-gf6I6I.J-K2N O    EgfNaNaFbEcce fg  56 {{ }V]]O: 67 0{ KLLLcLrc|jjD]<\}}|jr|jD]\}}|jdk(sy>y)NrQTF)rMrrNr0)rBr r:r9s rfamily_contains_bitfield32r sT''--/ 8    ~~'GAtyyL((0 rcNd} tjjtjj||}tjj |}tjj|d}tjj |r||ddfS)Nr[ MAINTAINERSr)rrrbasenamedirnameexists) full_pathsub_path maintainerss rfind_kernel_rootr( syH 77<< 0 0 ;XFGGOOI. ggll9m< 77>>+ &hsm+ + rc $tjd}|jddtdd|jdd td |jd d d d|jdd d|jddg|jdd dd|jddg|jddtd|j }|j |j d|jDcgc]}tj|}} t|j|}|jdk7r@td |jtd!tjj!d"t't)|j*|j, #}t/|j\}}|j0d$k(s |j r |j3d%|jd&n|j3d'|j|j3d(|j3d)|d&|j3d*|j0d+|j rd nd,d&|js |j4r[d-} | d.j7d-g|j4zz } | d/j7d-g|jzz } |j3d0| d&|j9|j0d$k(r t;||yd1|j<j?d2} |j r8|j3d3| z|j3d4| z|j9|j*r0tj@jC|j*dd5d6z} nd7} |j0d8k(r|j3d9|j3d:|j9|j s1|j*r|j3d;| d<|j9d=|jDzg} | |jFjId>gz } n|j3d?|j3d@|j r.|j3dAtK|r8|j3dBn&|j3d;| d<|j3dCg} |dD|dEzD]} d | vs| jM| d |j0dFk(r| jM|jDg}| D]-}||vs|j3dG|dH|jM|/|j9|j0dFk(r|j sH|j3dI|j9|j4D]}|j3d;|d<n.|j3dJ|j9tO||d|j9|j0d8k(r|j rtQ|jRjUD]$\}}|jVs|j3dKntQ|jRjUD]\}}|jVstY|| |j9|jZdLk(r]|j3dM|j\d&t_||j`|jbN}tY|||j9|jZdOvrp|jdjUD]S\}}dP|vs dQ|vstg|||j0|dP}tY||jhdR|S|j9Utk||tm||to||ntq||ts||tQ|jRjUD]$\}}|jVs|j3dKntQ|jRjUD]\}}|jVstu|| |j9|jZdLk(r]|j3dM|j\d&t_||j`|jbN}tu|||j9|jdjUD]\}}|jZdOvsdTD]u}||vsdR||vs|j3dU|jvdV|d&tg|||j0||}tu||jhdR|S|j9wty||t{||t}|||j0dFk(r |j rX|j3dWt|||jjUD]#\}}t|tst|||%|j9|j3dK|jRjUD]+\}}tg|||j0d-d-|}t||-|jdjUD]\}}|j3dX|jvdYdP|vrdQ|vr|j3dU|jvdZtg|||j0|dP}t|t||j9t|t||j9t||j9d[|vr|j3dU|jvd\tg|||j0|d[}t|t||jr |jr t|t|t||j9|jsv|j3dU|jvd]tg|||j0|d^}|jstd_|j\d`t||jjUD]h\}}dQ|vs tg|||j0|dQ}|j3dU|jvdat||j9t|j|j9n|j3dWt|||jjUD]#\}}t|tst|||%|j9db}|j3dc|jRjD]}|jst||d}|r|j9|jRjD]}t|||jD]}t_||}t|||j3dK|r|jRjUD][\}}tg|||j0d-d-|}t||jVr t|||jsPt||]|j9|jRjUD]\\}}tg|||j0d-d-|}t|||jVr t|||jsQt||^|jdjUD]\}}|j3dX|jvdYdP|vrxdQ|vrt|j3dU|jvdZtg|||j0|dP}t|t|t|t||j9d[|vr|j3dU|jvd\tg|||j0|d[}|jr |jr t|ddt|t|t||j9|jsB|j3dU|jvd]tg|||j0|d^}|jstd_|j\d`t||jjUD]q\}}dQ|vs |j3dU|jvdatg|||j0|dP}t|tg|||j0|dQ}t|s|j9tO||db|j r|j3de| d&yycc}w#t"j$$r4}t|tjj!d"Yd}~yd}~wwxYw)fNz Netlink simple parsing generator) descriptionz--moderdT)rkerneluapi)destr0requiredchoicesz--specr)rr0rz--headerr\ store_true)ractionrXz--source store_false)rrz --user-header+)nargsrXz --cmp-outzJDo not overwrite the output file if the new output is identical to the old)rrXhelpz --exclude-opr)rrXz-or)rr0rXz --header or --source is requiredz3((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)z Spec license:zDLicense must be: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)r)rrz/* SPDX-License-Identifier: rz// SPDX-License-Identifier: z0/* Do not edit directly, auto-generated from: */z/* z /* YNL-GEN rsourcer[z --user-header z --exclude-op z /* YNL-ARG_LINUX__GEN_Hr~r8ryrwzgenerated_header_file.hrz#include z#include z #include "r:zuapi/headersz#include z#include z#include z#include z#include "ynl.h"rvzattribute-setsrz #include <>z#include zstruct ynl_sock;z/* Common nested types */rz/* Global operation policy for rM>rr>rYr[r<rwrz/* rz /* Enums */z/* ============== z ============== */z - do */rZz - dump */z - notify */rz4Only notifications with consistent types supported (rz - event */Fz/* Policies */rrC)fargparseArgumentParser add_argumentr] parse_argsr\error exclude_oprecompilerorlicenseprintrrexitr4 YAMLErrorrr$rcmp_outrrdr user_headerrrrrErrrr|r`r;rrrr)rrr<r'rrr rrrrr}rHr[rar5r9r*r6rVr]rfrrCrVr:rrrrr rrxrrrr{rarerrrrFrrrrrrr=rrrrr rrrrrr!)parserrexprrsparsedexcrr spec_kernelrrhdr_filer definition seen_headerrr}r:rrwryrrr_has_recursive_nestss rmainr2 s)  $ $1S TF vC$ :< vC$G  ,PTU  -H sB?  L$ik xD :CF    D {{ 7804@2::d#K@  ;/ >>R R /6>> 2 X Y FFKKN IKt||;K MB%dii0NA{ yyFdkk +FNN+;3 ?@ +FNN+; <=DD ;<DD4 }C !DD;tyykt{{8"I MN $** !&&td.>.>'>??  %%rdT__&<== z$s #$EEG yyFFB,,./v6H {{ Z( "# Z( "#  }}77##DMM#2$67$>, yyH  '(  )* {{}}z(1-. EEGV///06''++Ir::  "#  "# ;; DD+ ,)&112 DD:hZq) * DD# $]+f5E.FF z ! NN:h/ 0G yyFv))*K k ! DD:cU!$ %   s #EEG yyF{{ DD/ 0 EEG''z#a()( DD# $ EEG vr4 0  yyH ;;#F$>$>$D$D$FG 6>>DD45H%+6+E+E+K+K+M$N &>>(V4%O EEG##x/6v{{m3GH(@(@FL`L`a$R0##'::#)::#3#3#5KGRrzgR&7'FDIIr4H,R91E"M $6 &fb 1 "62 . *62 6 &vr 2 5fb A#F$>$>$D$D$FG 6>>DD45H%+6+E+E+K+K+M$N &>>$R0%O EEG##x/6v{{m3GH(@(@FL`L`a V,%zz//1 ''+>>#1"b=Y"W+-EDD3r||nCy!DE!+B 2w!OB,R91E"MEEG $2 2 "&" - "62 . *62 6 yyF ;; DD  FB '%}}224 eeW-'E: 5 EEG DD, -$*$>$>$D$D$F &FDIIr2xHF+%G &zz//1 )",,7IJK2:'"3DD3r||nH56#B 2tDB"2&*2.EEG"2&*2.EEG'+EEGR<DD3r||nJ78#B 2vFB"2&*2.--&r*&r*(,EEG::DD3r||nL9:#B 2xHB--'*^_a_f_f^ggh(ijj&r*? 2B &{{002 b=#B 2wGBDD3r||nK89"2&EEG&r* 3 EEG DD   #%}}224 eeW-#FB6 5 EEG"'  DD! " 44;;=##!"f-*.'># 44;;="f%>((-"f%) DD, -"(.(B(B(H(H(J$Hf#B 2r8LB-b1~~0V<||22v> )K$*$>$>$D$D$F &FDIIr2xHF+>>"2v.<<$R0%G &zz//1 )",,7IJK2:'"3DD3r||nH56#B 2tDB"2&"2&!"%bMEEGR<DD3r||nJ78#B 2vFB--%b5"2&(,rNEEG::DD3r||nL9:#B 2xHB--'*^_a_f_f^ggh(ijj'+5 28 &{{002 b=DD3r||nK89#B 2tDB!"%#B 2wGB'+ 3 EEG vr5 1 {{ z(3 '(C A >> c   As'AH#A%AH"H"AI)H5*AI$I$AI)__main__)F)TNrL)rrHrGrQ)r[r<)rrpathlibrrrrrr4rrPath__file__rfparentas_posixlibrrrrrrr rrr"r$r.rrrrDrMrkr{rrrrrrrrr r0r:rHrWrkrorrrrmrnrFrjrrrurxr{rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr r rrrr rrrrr!r'r*r.r$r5r9rFrHrVr[r]rarfrjrrryrrrrrrr*r&rrrs    X&..077@@BC\\**  ~i8~iB  4 d .`.`.Ft"3.3.l1A1Ah%z%"