+
    "li c                   s   ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	]P                  P                  ]P                  ! ]4      P                  4       P                  P!                  4       4       ^ RIHtHtHtHtHtHt ^ RIHtHt R tR tR t ! R R4      t ! R	 R
]4      t ! R R]4      t ! R R]4      t  ! R R]4      t! ! R R]4      t" ! R R]4      t# ! R R]4      t$ ! R R]$4      t% ! R R]$4      t& ! R R]4      t' ! R R]4      t( ! R R ]4      t) ! R! R"]4      t* ! R# R$]4      t+ ! R% R&](4      t, ! R' R(4      t- ! R) R*4      t. ! R+ R,]4      t/ ! R- R.]4      t0 ! R/ R0]4      t1 ! R1 R2]4      t2 ! R3 R4]4      t3 ! R5 R6]4      t4 ! R7 R84      t5 ! R9 R:4      t60 Rmt7R;R<R=R>R?R?/t8R@R?RARBRCRDRER?/t90 RFkRGkRHkRIkRJkRKkRLkRMkR@kRNkROkRPkRQkRRkRSkRTkRUkRVkRWkRXkRYkRZkR[kR\kR]kR^kR_kR`kRakRbkRckRdkRekRfkt:Rg t;RRh lt<RRi lt=RRj lt>Rk t?Rl t@Rm tARn tBRo tCRRp ltDRq tERr tFRs tGRt tHRRu ltIRv tJRw tKRx tLRRy ltMRz tNRR{ ltOR| tPR} tQR~ tRR tSRR ltTRR ltUR tVR tWR tXR tYRR ltZR t[R t\RR lt]R t^R t_R t`R taR tbRR ltcR tdR teR tfR tgR thR tiRR ltjRR ltkR tlR tmR tnR toR tpR tqR trR tsR ttR tuR tvRR ltwR txR tyR tzR t{R t|R t}R t~R t]R8X  d
   ]! 4        R# R# )    N)
SpecFamilySpecAttrSetSpecAttrSpecOperationSpecEnumSetSpecEnumEntry)SpecSubMessageSpecSubMessageFormatc                 B    V P                  4       P                  R R4      # -_)upperreplacename   &4/usr/lib/python3.14/site-packages/pyynl/ynl_gen_c.pyc_upperr          ::<S))    c                 r	   r
   )Zlowerr   r   r   r   c_lowerr      r   r   c                s   V ^ ,          R8X  d   V P                  R4      '       d   ^ # \        V ^R 4      pV ^ ,          R8X  d
   V^,          p^V,          ^,
          pV ^ ,          R8X  d"   V P                  R4      '       d   V) ^,
          pV# )zF
Turn a string limit like u32-max or s64-min into its numerical value
uz-minsi)endswithint)r   Zwidthvalue   &  r   limit_to_numberr      sz     Aw#~$--//Qr
OEAw#~
%Z1EAw#~$--//
Lr   c                   s&   a  ] tR t^+t o R tRtV tR# )	BaseNlLibc                    R # )zys->family_id selfr   r   get_family_idZBaseNlLib.get_family_id,   s    r   r    N)__name__
__module____qualname____firstlineno__r#   __static_attributes____classdictcell____classdict__   @r   r   r   +   s      r   r   c                   s   a a ] tR t^0t oV 3R ltR tR tR tR R ltR!R lt	R t
R tR	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR t R"R lt!Rt"Vt#V ;t$# )#Typec                s  < \         SV `  WW44       W0n        W n        VR ,          V n        VP                  R/ 4      V n        RV n        RV n        RV n	        RV9   d   VR,          V n
        RV9   d   VR,          pMRV9   d   VR,          pMRpV'       d   WPn        V P                  VP                  8X  d   \        VP                   4      V n        M)\        VP                   RV P                   24      V n        V P                  V P                   P"                  9   d!   RV P                  ,           R,           V n        MRV P                  ,           V n        \        V P                  4      V n        V P&                  \(        9   d   V ;P&                  R,          un        V P&                  ^ ,          P+                  4       '       d   RV P&                  ,           V n        RV n        \/        V R	4       R# )
typechecksFlennested-attributessub-messageNr   struct 	enum_name)super__init__attrattr_setr.   getr/   requestreplyis_selectorr0   nested_attrsr   r   
ident_namenested_render_namefamilyconstsnested_struct_typec_name_C_KWZisdigitr4   delattr)r"   r@   r8   r7   r   nested	__class__s   &&&&& r   r6   ZType.__init__1   s   47	 L	hhx,
 D=E{DH$&-.Fd"-(FF &  FKK/*1V5F5F4G*I'*1V5F5F4GqIZIZH[2\*]'  DKK$6$66*3d6M6M*MPS*S'*3d6M6M*M'dii(;;%KK3K;;q>!!##+DK k"r   c                s    V P                   P                  V P                  P                  ,          V P                  ,          # N)r@   	attr_setsr8   	subset_ofr   r!   r   r   _get_real_attrZType._get_real_attr^   s*    {{$$T]]%<%<=diiHHr   c                    R V n         V P                  P                  '       d!   V P                  4       P	                  4        R# R# TN)r:   r8   rJ   rK   set_requestr!   r   r   rN   ZType.set_requestb   s3    =="""!--/ #r   c                rL   rM   )r;   r8   rJ   rK   	set_replyr!   r   r   rO   ZType.set_replyg   s3    
=="""!++- #r   c                s   V P                   P                  W4      pVf   V# \        V\        4      '       d   V# W0P                  P
                  9   d%   V P                  P
                  V,          R,          # \        V4      # )Nr   )r/   r9   
isinstancer   r@   rA   r   )r"   limitdefaultr      &&& r   	get_limitZType.get_limitl   se    /=LeS!!LKK&&&;;%%e,W55u%%r   c                s   V P                   P                  W4      pVf   R# \        V\        4      '       d   \	        V4      V,           # W@P
                  P                  9   da   V P
                  P                  V,          pVP                  R4      '       d   \        V4      # \        V P
                  R,           RV 24      # \        V4      # )N headerr   r   )r/   r9   rP   r   strr@   rA   r   )r"   rQ   rR   suffixr   const   &&&&  r   get_limit_strZType.get_limit_strv   s    /=eS!!u:&&KK&&&KK&&u-Eyy""u~%dkk&12!E7;<<u~r   c                s   R V P                   9   d   V P                   R ,          P                  pMWRV P                   9   d#   V P                   R,           V P                   2pM$V P                  P                   V P                   2p\        V4      V n        V P                  P                  '       d7   V P                  V P                  4       P                  8w  d   \        R4      hR# R# )parent-sub-messagename-prefixz/Overriding checks not supported by codegen, yetN)
r7   r4   r   r8   name_prefixr   rJ   r/   rK   	Exception)r"   r4      & r   resolveZType.resolve   s    499,		"67AAIdii'99]34TYYK@I==445dii[AI +=="""{{d113::: QRR ; #r   c                r   rH   r    r!   r   r   is_multi_valZType.is_multi_val       r   c                s     V P                   R9   # )u8>   rd   s32s64u16u32u64)r.   r!   r   r   	is_scalarZType.is_scalar   s    yyEEEr   c                r   Fr    r!   r   r   is_recursiveZType.is_recursive       r   c                sT    V P                  4       ;'       d    VP                  '       * # rH   )rl   opr"   ri   &&r   is_recursive_for_opZType.is_recursive_for_op   s      "00255y0r   c                r   )presentr    r!   r   r   presence_typeZType.presence_type   s    r   c                s    V P                  4       V8w  d   R # V P                  4       R8X  d   VR8X  d   RMRpV RV P                   R2# V P                  4       R9   d   VR8X  d   RMRpV RV P                   R2# R # )	Nrs   user__rU   zu32 z:1;;   r0   count)rt   rC   )r"   spacetype_filterpfxrS   r   presence_memberZType.presence_member   s    ;.9,6/$rCU$t{{m3//#336/$rCU$t{{m1-- 4r   c                r   rH   r    ro   rq   r   _complex_member_typeZType._complex_member_type   rc   r   c                r   rk   r    r!   r   r   free_needs_iterZType.free_needs_iter   rm   r   c                s    V P                  4       '       g   V P                  4       R9   d   RV RV V P                   R2.# . # )ry   free(->);rx   )rb   rt   rC   )r"   rp   varref   &&&&r   _free_linesZType._free_lines   sG    $"4"4"6:J"JC53%}B788	r   c                sr    V P                  WV4      pV F  pVP                  P                  V4       K   	  R # rH   )r   cwp)r"   rp   r   r   lineslinerZ   r   freeZ	Type.free   s-      #.DEEGGDM r   c                s.   V P                  V4      pV'       df   VR,          R8w  d   RMRpW#,           R,           V P                  ,           .pV P                  4       R8X  d   VRV P                  ,           .,          pV# \        RV P                   24      h)   * rU   ry   unsigned int n_z-Struct member not implemented for class type )r~   rC   rt   r_   r.   )r"   rp   memberspcarg   &&   r   
arg_memberZType.arg_member   s    **2.s*#C<#%34C!!#w.)DKK788JG		{STTr   c                s   V P                  V4      pV'       dv   V P                  4       '       d   R MRpV P                  V4      '       d   R pVR,          R 8w  d   RMRpVP                  P	                  V V V V P
                   R24       R# V P                  V4      pV F%  pVP                  P	                  VR,           4       K'  	  R# )r   rU   r   rw   Nr   )r~   rb   rr   r   r   rC   r   )r"   rp   r   Zptrr   membersones   &&     r   struct_memberZType.struct_member   s    **2.**,,#"C''++s*#CEEGGvhseC5Q78//"%CEEGGC#I r   c                s"    R V,           R,           # )
{ .type = , }r    r"   policyrq   r   _attr_policyZType._attr_policy   s    f$u,,r   c                s*   R \        V P                  4       2pV P                  P                  R4      R8X  d(   V P                  R	9   d   RV P                  R,           2pV P	                  V4      pVP                  RV P                   RV R24       R# )
ZNLA_
byte-orderz
big-endianZNLA_BEr   NN	[] = ,N>   rg   rh   )r   r.   r7   r9   r   r   r4   r"   r   r   spec   &&  r   attr_policyZType.attr_policy   s}    		*+,99==&,6yyN*!$))B-1  (
s4>>"$tfA./r   c                2    \        R V P                   24      h)z+Type policy not implemented for class type r_   r.   r!   r   r   _attr_typolZType._attr_typol   s    Edii[QRRr   c                s    V P                  4       pVP                  R V P                   RR RV P                   RV R R2
4       R# )[r   {z
 .name = "z", }r   N)r   r   r4   r   )r"   r   typol   && r   
attr_typolZType.attr_typol   sD      "
q SEDII;c%QOPr   c           	     s    V P                  4       pVR9   d0   VP                  P                  RV RV RV P                   R24       VP                  P                  V R24       R# )rs   if (->_.)rw   N>   r0   rs   )rt   r   r   rC   )r"   rp   r   r   presence   &&&& r   _attr_put_lineZType._attr_put_line   sX    %%'))EEGGd3%s8*Adkk]!<=
4&
r   c           	     sp    R V RV P                    RV RV P                   R2	pV P                  WV4       R# )ynl_attr_put_(nlh, , r   r   Nr4   rC   r   )r"   rp   r   put_typer   r   r   _attr_put_simpleZType._attr_put_simple   s<    xjt~~.>bR}TUVBT*r   c                r   )z#Put not implemented for class type r   r"   rp   r      &&&r   attr_putZType.attr_put   s    =dii[IJJr   c                r   )z(Attr get not implemented for class type r   r   r   r   	_attr_getZType._attr_get   s    B499+NOOr   c                s   V P                  W4      w  rEp\        V4      \        J d   V.p\        V4      \        J d   V.pV'       d   R MRpVP                  P	                  V RV P
                   R2R7       V'       d?   V F  pVP                  P                  V4       K   	  VP                  P                  4        V P                  4       '       gw   VP                  P                  R4       VP                  P                  R4       V P                  4       R8X  d,   VP                  P                  V RV P                   R	24       V'       d?   VP                  P                  4        V F  p	VP                  P                  V	4       K   	  V F  p	VP                  P                  V	4       K   	  VP                  P                  4        R
# )ifelse ifz
 (type == r   r   z"if (ynl_attr_validate(yarg, attr))return YNL_PARSE_CB_ERROR;rs   ->_present. = 1;T)r   r.   rW   r   block_startr4   r   nlrb   rt   rC   	block_end)
r"   rp   r   firstr   
init_lines
local_varskwZlocalr   
   &&&&      r   attr_getZType.attr_get   sM   (,r(?%:;#GE
s"$JT	
"Z/?qAB# $EEHHJ  ""EEGG89EEGG01!!#y03%{4;;-u=>EEHHJ" # DEEGGDM 
r   c                r   )z&Setter not implemented for class type r   r"   rp   r   r   r   r   _setter_linesZType._setter_lines  s    @LMMr   c                s   V'       d   TM. V P                   .,           pV R RP                  V4       2p. pV P                  4       '       d   VR.,          p. p	Rp
\        ^ \	        V4      4       F  pV R RP                  VRV R.,           4       RW[,           2p
V\	        V4      ^,
          8X  dS   V P                  4       R8w  d>   V R RP                  VRV R.,           4       RV P                  4        RW[,           2p
K  V	P                  V
R,           4       K  	  RP                  VRR 4      pV'       d
   VR,          pWP                  WV4      ,          p	WP                  WV
4      ,          p	\        WVR	7       R
RP                  V4       2p\        V	 Uu. uF  pRV9   g   K  VNK  	  up4      p\        V	 Uu. uF  pRV9   g   K  VNK  	  up4      pV'       d   V'       g
   RV,           pVP                  P                  RWV	\        WVR	7       RV 2.V P                  V4      ,           R7       R# u upi u upi )r   r   unsigned int i;rU   Nz	_present.rs   r   r   derefZ_set_r   zalloc(rv   static inline void *)r   bodyargsr   )rC   joinr   ranger0   rt   appendr   r   	op_prefixboolr   
write_func	type_namer   )r"   rp   rz   	directionr   r   r   r   r   Zcoder   iZref_pathZ	func_namexr   Zallocs   &&&&&&&          r   setterZType.setter  s%   srdkk]25388C=/*
!!,--Jq#c(#Ab#bq'RD.!9 :)CF8LH CHqL T%7%7%9Y%F!U"SXXc"1gn%=$>a@R@R@T?UUVWZW]V^_KK7*+ $ 88CH%OH  (33""2x88 e<=U388C=/R	511QQ567AQaa78y(I
-y""+B"G!H3%PQTXTcTcdfTgg 	 	i	 67s   !	I/I	II)r7   r8   rC   r/   r4   r<   r0   r=   r?   rB   r;   r:   r.   rH   )NrU   FNreq)%r$   r%   r&   r'   r6   rK   rN   rO   rT   r[   ra   rb   rj   rl   rr   rt   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r(   r)   __classcell__rG   r+      @@r   r-   r-   0   s     +#ZI0
.
&SF1
.

U-0SQ+KP<Ni ir   r-   c                   T   a  ] tR tRt o R tR tR tR tR tR t	R t
RR
 ltRtV tR	# )
TypeUnusedi8  c                r   rU   r    r!   r   r   rt   ZTypeUnused.presence_type9      r   c                    . # rH   r    ro   rq   r   r   ZTypeUnused.arg_member<      	r   c                s    R .RR3# )r   Nr    r   r   r   r   ZTypeUnused._attr_get?  s    ,-tT99r   c                r   )z.type = YNL_PT_REJECT, r    r!   r   r   r   ZTypeUnused._attr_typolB      (r   c                r   rH   r    r"   r   rq   r   r   ZTypeUnused.attr_policyE      r   c                r   rH   r    r   r   r   r   ZTypeUnused.attr_putH  r   r   c                r   rH   r    r"   rp   r   r   r   r   r   ZTypeUnused.attr_getK  r   r   Nc                r   rH   r    r"   rp   rz   r   r   r   r      &&&&&&&r   r   ZTypeUnused.setterN  r   r   r    FNN)r$   r%   r&   r'   rt   r   r   r   r   r   r   r   r(   r)   r*   r,   r   r   r   8  s2     :) r   r   c                   sN   a  ] tR tRt o R tR tR tR tR tR t	RR	 lt
R
tV tR# )TypePadiR  c                r   r   r    r!   r   r   rt   ZTypePad.presence_typeS  r   r   c                r   rH   r    ro   rq   r   r   ZTypePad.arg_memberV  r   r   c                r   )z.type = YNL_PT_IGNORE, r    r!   r   r   r   ZTypePad._attr_typolY  r   r   c                r   rH   r    r   r   r   r   ZTypePad.attr_put\  r   r   c                r   rH   r    r   r   r   r   ZTypePad.attr_get_  r   r   c                r   rH   r    r   rq   r   r   ZTypePad.attr_policyb  r   r   Nc                r   rH   r    r   r   r   r   ZTypePad.settere  r   r   r    r   )r$   r%   r&   r'   rt   r   r   r   r   r   r   r(   r)   r*   r,   r   r   r   R  s-     ) r   r   c                   sn   a a ] tR tRt oV 3R ltV 3R ltR tV 3R ltR tR t	R t
R	 tR
 tRtVtV ;t# )
TypeScalarii  c                s   < \         SV `  WW44       R V n        RV9   d   RVR,           R2V n        VP                  4       '       g   V P	                  4        RV n        \        V R4       RV n        \        V R4       R# )rU   r   z /*  */Nis_bitfieldr   )r5   r6   byte_order_comment
is_classic_init_checksr   rE   r   r"   r@   r8   r7   r   rG      &&&&&r   r6   ZTypeScalar.__init__j  s{    47"$4(,T,-?,@&DD#   ""  m$k"r   c                s  < V P                  \        4       4       R V P                  9   d"   V P                  R ,          '       d	   RV n        MVRV P                  9   d?   V P                  P
                  V P                  R,          ,          R,          R8H  V n        MRV n        V P                  '       gQ   RV P                  9   d@   V P                  P
                  V P                  R,          ,          P                  V n        R# V P                  '       d)   RV P                  ^ ,          ,           R,           V n        R# RV P                  ,           V n        R# )	zenum-as-flagsTenumr.   flagsFrv   Z64N)

resolve_upr5   r7   r   r@   rA   	user_typer   Zis_auto_scalarr.   r"   rG      &r   ra   ZTypeScalar.resolve|  s     dii'DIIo,F,F#Dtyy #{{11$))F2CDVLPWWD$DFdii$7![[//		&0ABLLDN   !DIIaL047DN!DII-DNr   c           
     s    R V P                   9   d   V P                  P                  V P                   R ,          ,          pVP                  4       w  r#VR8X  d   VR8X  d   RV P                  R&   M]RV P                  9  d.   V^ 8w  g   V P
                  ^ ,          R8X  d   W P                  R&   RV P                  9  d   W0P                  R&   RV P                  9   d   RV P                  9   dq   V P                  R4      V P                  R4      8  d=   \        RV P                   RV P                  R4       R	V P                  R4       24      hRV P                  R
&   \        V P                  R^ 4      V P                  R^ 4      4      p\        V P                  R^ 4      V P                  R^ 4      4      pV^ 8  d2   V P
                  ^ ,          R8X  d   \        RV P                   R24      hVR8  g   VR8  d   RV P                  R&   R# R# )r   NTsparseminr   maxzInvalid limit for "z" min: z max: r   r   z"" negative limit for unsigned typei  
full-rangei )r7   r@   rA   value_ranger/   r.   rT   r_   r   r  r  )r"   r   lowhigh   &   r   r   ZTypeScalar._init_checks  s   TYY;;%%dii&78D((*ICd{tt|(,H%+ax499Q<3#6-0E*+)-KK&DKKET[[$8~~e$t~~e'<<"5dii[W\H]G^^deiesestyezd{ |}}#'DKK $..*DNN5!,DE4>>%+T^^E1-EF7tyy|s*1$))<^_``<4%<(,DKK% (r   c                s  < R V P                   9   g   V P                  '       d   V P                  '       dB   V P                  P                  V P                  R,          ,          pVP                  RR7      pMPV P                  P                  V P                   R ,          ,          p\        VR,          4      p^V,          ^,
          pRV RVR R2# R	V P                   9   d   R
V R\        V P                  4       R2# RV P                   9   d+   RV RV P                  R4       RV P                  R4       R2# RV P                   9   d   RV RV P                  R4       R2# RV P                   9   d   RV RV P                  R4       R2# RV P                   9   d   RV R\        V P                  4       R2# \        SV `-  V4      # )z
flags-maskr   TZas_flagsentrieszNLA_POLICY_MASK(z, 0xr   r   r  zNLA_POLICY_FULL_RANGE(, &z_range)r   zNLA_POLICY_RANGE(r   r  r  zNLA_POLICY_MIN(zNLA_POLICY_MAX(r  zNLA_POLICY_VALIDATE_FN(z
_validate))r/   r   r@   rA   r7   get_maskr0   r   r4   r[   r5   r   )r"   r   r   maskr   Zflag_cntrG   s   &&    r   r   ZTypeScalar._attr_policy  s   4;;&$*:*:*:{{))$))F*;<}}d}3**4;;|+DEuY/0X*%fXT$q;;T[[(+F83wt~~7N6OwWW#&vhb1C1CE1J0K2dN`N`afNgMhhijjdkk!$VHBt/A/A%/H.IKKdkk!$VHBt/A/A%/H.IKK$,VHC8O7PPZ[[w#F++r   c                sB    R \        V P                  R,          4       R2# ).type = YNL_PT_Ur   r   )r   r.   r!   r   r   r   ZTypeScalar._attr_typol  s    !'$))B-"8!9<<r   c                sR    V P                    R V P                   V P                   2.# )r   )r   rC   r   ro   rq   r   r   ZTypeScalar.arg_member  s*    >>"!DKK=1H1H0IJKKr   c                s>    V P                  WV P                  4       R # rH   )r   r.   r   r   r   r   ZTypeScalar.attr_put  s    btyy1r   c                sF    V R V P                    RV P                   R2RR3# )r   z = ynl_attr_get_(attr);N)rC   r.   r   r   r   r   ZTypeScalar._attr_get  s,    b%5dii[H$PTTTr   c                s(    V R V P                    R2.# ) = rw   rC   r   r   r   r   ZTypeScalar._setter_lines  s    (#dkk]!,--r   )r   r   r   )r$   r%   r&   r'   r6   ra   r   r   r   r   r   r   r   r(   r)   r   r   r   r   r   r   i  s9     #$."-2,,=L2U. .r   r   c                   s>   a  ] tR tRt o R tR tR tR tR tRt	V t
R# )	TypeFlagi  c                r   rH   r    ro   rq   r   r   ZTypeFlag.arg_member  r   r   c                r   )z.type = YNL_PT_FLAG, r    r!   r   r   r   ZTypeFlag._attr_typol      &r   c                sF    V P                  WR V P                   R24       R# )ynl_attr_put(nlh, z
, NULL, 0)N)r   r4   r   r   r   r   ZTypeFlag.attr_put  s!    B'9$..9I%TUr   c                s    . R R 3# rH   r    r   r   r   r   ZTypeFlag._attr_get  s    4~r   c                r   rH   r    r   r   r   r   ZTypeFlag._setter_lines  r   r   r    N)r$   r%   r&   r'   r   r   r   r   r   r(   r)   r*   r,   r   r  r    s$     'V r   r  c                   sV   a  ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
 tRtV tR# )
TypeStringi  c                s"    R V P                    2.# )const char *r  ro   rq   r   r   ZTypeString.arg_member  s    t{{m,--r   c                r   r0   r    r!   r   r   rt   ZTypeString.presence_type  rm   r   c                X    VP                   P                  R V P                   R24       R# )zchar *rw   Nr   r   rC   ro   rq   r   r   ZTypeString.struct_member      
&Q'(r   c                s@    R pV P                   '       d
   VR,          pV# )z.type = YNL_PT_NUL_STR, z.is_selector = 1, )r<   r"   r   r`   r   r   ZTypeString._attr_typol  s#    *))Er   c                s    R V P                   9   d"   RV P                  R 4      ,           R,           pV# RV,           pRV P                   9   d    VRV P                  R4      ,           ,          pVR,          pV# )	exact-lenNLA_POLICY_EXACT_LEN(r   r   max-lenz	, .len = r   )r/   r[   )r"   r   memr   r   r   ZTypeString._attr_policy  so    $++%)D,>,>{,KKcQC 
	 'CDKK'{T%7%7	%BBB5LC
r   c                s    V P                   P                  R R4      '       d   RpMRpV P                  V4      pVP                  RV P                   RV R24       R# )zunterminated-okFZ
NLA_STRINGZNLA_NUL_STRINGr   r   r   N)r/   r9   r   r   r4   r   r   r   r   ZTypeString.attr_policy  sR    ;;??,e44!F%F  (
s4>>"$tfA./r   c                s*    V P                  WR 4       R# )rW   N)r   r   r   r   r   ZTypeString.attr_put   s    bu-r   c                s    VR ,           V P                   ,           pV R2V RV P                    R2RV RV P                    R2V RV P                    R2.R.R.3# )	->_len. = len;r   z = 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;r  r"   rp   r   len_memrS   r   r   ZTypeString._attr_get  s|    	/DKK/)7#%r$++&9:#b-LM%r$++j13 RR#$% 	%r   c           	     sn    V R V P                    R2V RV R2RV RV P                    RV R2V RV R2.# )z
 = strlen(r   
 = malloc(z + 1);r&  r   r   z] = 0;r  r   r   r   r   ZTypeString._setter_lines  s\    *Jt{{m26(*XJf5&DKK=8*B?(!H:V,. 	.r   r    N)r$   r%   r&   r'   r   rt   r   r   r   r   r   r   r   r(   r)   r*   r,   r   r  r    s7     .)0.%. .r   r  c                   sP   a  ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
tV tR# )
TypeBinaryi  c                s$    R V P                    2R.# )zconst void *z
size_t lenr  ro   rq   r   r   ZTypeBinary.arg_member  s    t{{m,l;;r   c                r   r  r    r!   r   r   rt   ZTypeBinary.presence_type  rm   r   c                r  )zvoid *rw   Nr  ro   rq   r   r   ZTypeBinary.struct_member  r  r   c                r   )z.type = YNL_PT_BINARY,r    r!   r   r   r   ZTypeBinary._attr_typol  s    '(r   c                sV   \        V P                  4      ^ 8X  d   M[\        V P                  4      ^8X  d7   \        V P                  4      ^ ,          pVR9  d   \        RV,           4      hM\        R4      h\        V P                  4      ^ 8X  d   RpV# RV P                  9   d"   RV P	                  R4      ,           R,           pV# RV P                  9   d"   R	V P	                  R4      ,           R
,           pV# RV P                  9   d    RV P	                  R4      ,           R,           pX# )r    r   min-lenr"  z#Unsupported check for binary type: z8More than one check for binary type not implemented, yetz{ .type = NLA_BINARY, }r!  r   z	{ .len = r   zNLA_POLICY_MAX_LEN(>   r"  r-  r   )r0   r/   listr_   r[   )r"   r   Z
check_namer#  r   r   r   ZTypeBinary._attr_policy   s   t{{q "dkk*1-J!DD E
 RSS E VWWt{{q +C 
 DKK')D,>,>{,KKcQC 
 $++% 2 29 ==EC 
 $++%'$*<*<Y*GG#MC
r   c                s    V P                  WR V P                   R2V RV P                   RV RV P                   R2,           4       R# )r  r   r   r$  r   N)r   r4   rC   r   r   r   r   ZTypeBinary.attr_put5  sN    B'9$..9I%L"e2dkk]"SEQO&P 	Qr   c                s    VR ,           V P                   ,           pV R2V RV P                    R2RV RV P                    R2.R.R.3# )r$  r%  r    = malloc(len);r&  , ynl_attr_data(attr), len);len = ynl_attr_data_len(attr);r(  r  r)  rS   r   r   ZTypeBinary._attr_get9  sg    	/DKK/)7#%r$++o6#b-IJL 11#$	% 	%r   c           	     sF    V R 2V RV R2RV RV P                    RV R2.# )r%  r+  r   r&  r   r  r   r   r   r   ZTypeBinary._setter_linesA  sD    *G$(*XJb1&DKK=8*B?A 	Ar   r    N)r$   r%   r&   r'   r   rt   r   r   r   r   r   r   r(   r)   r*   r,   r   r,  r,    s5     <))*Q%A Ar   r,  c                   s,   a  ] tR tRt o R tR tRtV tR# )TypeBinaryStructiG  c                s    VP                   P                  R \        V P                  R4      4       RV P                   R24       R# )r3   structr   rw   N)r   r   r   r9   rC   ro   rq   r   r   ZTypeBinaryStruct.struct_memberH  s4    
''$((8"456bQGHr   c           
     sN   R \        V P                  R4      4      ,           R,           pVR,           V P                  4       ,           R,           V P                  ,           pV R2RV R2V RV P                   RV R	2R
V RV P                   R2RV RV P                   R2.R.R.3# )sizeof(struct r3  r   r   r   r%  z
if (len < r   z = calloc(1, r   elser/  r&  r0  r1  r(  )r   r9   rt   rC   )r"   rp   r   	struct_szr*     &&&  r   r   ZTypeBinaryStruct._attr_getK  s    $wtxx/A'BBSH	+ 2 2 44s:T[[H)7#YKq)%r$++mI;bA%r$++o6#b-IJL 11#$% 	%r   r    N)r$   r%   r&   r'   r   r   r(   r)   r*   r,   r   r2  r2  G  s     I
% 
%r   r2  c                   D   a  ] tR tRt o R tR tR tR tR tR t	Rt
V tR	# )
TypeBinaryScalarArrayiX  c                sH    R V P                  R4       RV P                   2R.# )rv   sub-typer   zsize_t countr9   rC   ro   rq   r   r   Z TypeBinaryScalarArray.arg_memberY  s(    TXXj)*"T[[M:NKKr   c                r   ry   r    r!   r   r   rt   Z#TypeBinaryScalarArray.presence_type\      r   c                s|    VP                   P                  R V P                  R4       RV P                   R24       R# )rv   r:  r   rw   N)r   r   r9   rC   ro   rq   r   r   Z#TypeBinaryScalarArray.struct_member_  s/    
"TXXj)*"T[[M;<r   c                s   V P                  4       pVP                  P                  R V RV RV P                   R2R7       VP                  P	                  RV RV RV P                   RV P                  R4       R2	4       VP                  P	                  R	V P                   R
2V RV P                   R2,           4       VP                  P                  4        R# )r   r   r   r   r   zi =  * sizeof(__r:  r   r  r   r   z, i);N)rt   r   r   rC   r   r9   r4   r   )r"   rp   r   r   rS   r   r   ZTypeBinaryScalarArray.attr_putb  s    %%'
cU#hZqQGH
$se3xj$++l488JCWBXXZ[\
$T^^$4B7%r$++e,- 	.
r   c                s    VR ,           V P                   ,           pV RV P                  R4       R2RV RV P                  R4       R2V RV P                    R2RV RV P                    R	2.R
.R.3# )	->_count.z = len / sizeof(__r:  r   zlen = r>  r   r/  r&  r0  r1  r(  )rC   r9   r)  rS   r   r   ZTypeBinaryScalarArray._attr_getj  s    #dkk1)-dhhz.B-C2F	dhhz.B-C2F%r$++o6#b-IJL 11#$% 	%r   c                sb    V R 2RV P                  R4       R2V R2RV RV P                   R2.# )z	 = count;zcount *= sizeof(__r:  r   z = malloc(count);r&  r   z	, count);r;  r   r   r   r   Z#TypeBinaryScalarArray._setter_liness  sM    *I&$TXXj%9$:"=(+,&DKK=	:< 	<r   r    N)r$   r%   r&   r'   r   rt   r   r   r   r   r(   r)   r*   r,   r   r9  r9  X  s)     L=%< <r   r9  c                   r8  )
TypeBitfield32iz  c                r   )zstruct nla_bitfield32r    ro   rq   r   r~   Z#TypeBitfield32._complex_member_type{  r  r   c                r   )z.type = YNL_PT_BITFIELD32, r    r!   r   r   r   ZTypeBitfield32._attr_typol~  s    ,-r   c                s    R V P                   9   g   \        R4      hV P                  P                  V P                   R ,          ,          pVP	                  RR7      pRV R2# )r   z!Enum required for bitfield32 attrTr  zNLA_POLICY_BITFIELD32(r   )r7   r_   r@   rA   r  )r"   r   r   r  r   r   r   ZTypeBitfield32._attr_policy  sV    "?@@{{!!$))F"34}}d}+'vQ//r   c                sj    R V P                    RV RV P                   R2pV P                  WV4       R# )r  r  r   z , sizeof(struct nla_bitfield32))Nr   )r"   rp   r   r   rS   r   r   ZTypeBitfield32.attr_put  s6    #DNN#33se2dkk]JjkBT*r   c                s.    R V RV P                    R2RR3# )memcpy(&r   z6, ynl_attr_data(attr), sizeof(struct nla_bitfield32));Nr  r   r   r   r   ZTypeBitfield32._attr_get  s%    #b-cdfjlpppr   c                s*    R V RV P                    R2.# )rA  r   z!, sizeof(struct nla_bitfield32));r  r   r   r   r   ZTypeBitfield32._setter_lines  s    6("T[[M1RSTTr   r    N)r$   r%   r&   r'   r~   r   r   r   r   r   r(   r)   r*   r,   r   r@  r@  z  s+     '.0+qU Ur   r@  c                   r   )TypeNesti  c                sd    V P                   P                  V P                  ,          P                  # rH   )r@   pure_nested_structsr=   	recursiver!   r   r   rl   ZTypeNest.is_recursive  s#    {{..t/@/@AKKKr   c                    V P                   # rH   rB   ro   rq   r   r~   ZTypeNest._complex_member_type      &&&r   c           	     s    . pR pV P                  V4      '       d    RpVRV RV V P                   R2.,          pW@P                   RV V RV V P                   R2.,          pV# )&rU   r   r   r   _free(r   )rr   rC   r?   )r"   rp   r   r   r   atrZ   r   r   ZTypeNest._free_lines  s}    ##B''BSEC5Q788E,,-VB4uBseDKK=PRSTTr   c                "    R V P                    R2# .type = YNL_PT_NEST, .nest = &_nest, r?   r!   r   r   r   ZTypeNest._attr_typol      /0G0G/HPPr   c                s6    R V P                   ,           R,           # )zNLA_POLICY_NESTED(z_nl_policy)rO  r   rq   r   r   ZTypeNest._attr_policy  s    #d&=&==MMr   c                s    V P                  V4      '       d   R MRpV P                  WV P                   R2V P                   RV V RV P                   R2,           4       R# )rU   rH  
_put(nlh, r   r   r   N)rr   r   r?   r4   rC   )r"   rp   r   rJ  rS   r   r   ZTypeNest.attr_put  sc    ++B//RSB(?(?'@
%K#~~.bSEDKK=J&K 	Lr   c                s\   V P                   P                  V P                  ,          pR R.pVP                  4        F#  pVP	                  V RVP
                   24       K%  	  RV P                   RRP                  V4       R2R.pRV P                   R	2R
V RV P                   R2.pWgR3# )z&pargr7   r   r   z_parse(r   ))r   parg.rsp_policy = &_nest;parg.data = &rw   N)	r@   rC  r=   external_selectorsr   r   r?   r   rC   )r"   rp   r   Zpnsr   sel	get_linesr   s   &&&     r   r   ZTypeNest._attr_get  s    kk--d.?.?@ ))+CKK3%r#((,- ,D334GDIIdO;LBO13	+D,C,C+DFK%cU"T[[M;=
d**r   Nc           
     s,   V'       d   TM. V P                   .,           pVP                  P                  V P                  ,          P	                  4        F<  w  rxVP                  4       '       d   K  VP                  WP                  W4VVR 7       K>  	  R# ))r   r   r   N)rC   r@   rC  r=   member_listrl   r   )	r"   rp   rz   r   r   r   r   r   r7   s	   &&&&&&&  r   r   ZTypeNest.setter  ss    srdkk]2yy44T5F5FGSSUGA  ""KK--y3  ! Vr   r    r   )r$   r%   r&   r'   rl   r~   r   r   r   r   r   r   r(   r)   r*   r,   r   rB  rB    s6     L'QNL
	+! !r   rB  c                   sz   a a ] tR tRt oV 3R ltR tR tR tV 3R ltR t	R t
R	 tR
 tR tR tR tRtVtV ;t# )TypeMultiAttri  c                s4   < \         SV `  WW44       WPn        R # rH   )r5   r6   	base_type)r"   r@   r8   r7   r   r[  rG   s   &&&&&&r   r6   ZTypeMultiAttr.__init__  s    47"r   c                r   Tr    r!   r   r   rb   ZTypeMultiAttr.is_multi_val  rc   r   c                r   r<  r    r!   r   r   rt   ZTypeMultiAttr.presence_type  r=  r   c                s   R V P                   9  g   V P                   R ,          R8X  d   V P                  # V P                   R ,          R8X  d   RV P                   9   d   R# V P                   R ,          R8X  d   R# V P                   R ,          \        9   d/   VP                  R8X  d   RMR	pW P                   R ,          ,           # \	        R
V P                   R ,           R24      h)r.   nestbinaryr3  Nstringzstruct ynl_string *ru   rv   rU   	Sub-type  not supported yet)r7   rB   scalarsku_spacer_   r"   rp   Z
scalar_pfxr   r   r~   Z"TypeMultiAttr._complex_member_type  s    "dii&76&A***YYv(*x499/DYYv(*(YYv')!#!6BJ		& 111i		&(9'::LMNNr   c                s   < V P                   R 8X  dM   RV P                  9   d<   R\        V P                  R,          4       RV P                   2RV P                   2.# \        SV `  V4      # )r^  r3  r3   r   r   )r.   r7   r   rC   r5   r   r"   rp   rG      &&r   r   ZTypeMultiAttr.arg_member  se    99 X%:gdii&9:;2dkk]K%dkk]35 5w!"%%r   c                s.    V P                   R ,          R9   # )r.   >   r]  r_  r7   r!   r   r   r   ZTypeMultiAttr.free_needs_iter  s    yy $666r   c           	     s   . pV P                   R ,          \        9   d    VRV RV V P                   R2.,          pV# V P                   R ,          R8X  d    VRV RV V P                   R2.,          pV# V P                   R ,          R8X  dI   VRV RV RV P                   R2RV RV V P                   R	2RV RV V P                   R2.,          pV# R V P                   9  g   V P                   R ,          R
8X  dU   VRV RV RV P                   R2V P                   RV RV V P                   R	2RV RV V P                   R2.,          pV# \	        RV P                   R ,           R24      h)r.   r   r   r   r^  r_  for (i = 0; i < z_count.; i++)[i]);r]  z_free(&zFree of MultiAttr sub-type ra  )r7   rb  rC   r?   r_   )r"   rp   r   r   r   r   r   r   ZTypeMultiAttr._free_lines  s   99V'cU"SE$++b9::E" ! YYv(*cU"SE$++b9::E  YYv(*"3%r#gdkk]&IuBseDKK=6uBseDKK=3 E  499$		&(9V(C"3%r#gdkk]&I**+73%r#t{{m5QuBseDKK=3 E  9$))F:K9LL^_``r   c                s8    V P                   P                  V4      # rH   )r[  r   r   rq   r   r   ZTypeMultiAttr._attr_policy  s    ~~**622r   c                s6    V P                   P                  4       # rH   )r[  r   r!   r   r   r   ZTypeMultiAttr._attr_typol  s    ~~))++r   c                s(    R V P                    R2RR3# )Zn_++;Nr  r   r   r   r   ZTypeMultiAttr._attr_get  s    DKK=$dD00r   c                s   V P                   R ,          \        9   dw   V P                  pVP                  P	                  RV RV P
                   R24       VP                  P	                  RV RV P                   RV RV P
                   R2	4       R# V P                   R ,          R	8X  d   R
V P                   9   d   VP                  P	                  RV RV P
                   R24       VP                  P	                  RV P                   RV RV P
                   R\        V P                   R
,          4       R2	4       R# V P                   R ,          R8X  dh   VP                  P	                  RV RV P
                   R24       VP                  P	                  RV P                   RV RV P
                   R24       R# R V P                   9  g   V P                   R ,          R8X  dr   VP                  P	                  RV RV P
                   R24       V P                  WV P                   R2V P                   RV RV P
                   R2,           4       R# \        RV P                   R ,           R24      h)r.   rh  r?  ri  r   r   r   r   rj  r^  r3  r  r  z[i], sizeof(struct ));r_  zynl_attr_put_str(nlh, z
[i]->str);r]  rQ  z[i])zPut of MultiAttr sub-type ra  N)r7   rb  r.   r   r   rC   r4   r   r   r?   r_   r"   rp   r   r   rS   r   r   ZTypeMultiAttr.attr_put  s   99V'yyHEEGG&se9T[[MHIEEGGmH:VDNN3C2cU"T[[MY^_`YYv(*x499/DEEGG&se9T[[MHIEEGG((8C54;;-Obcjkoktktu}k~c  cA  AD  E  FYYv(*EEGG&se9T[[MHIEEGG,T^^,<Bse2dkk]R\]^499$		&(9V(CEEGG&se9T[[MHID,C,C+DJ)O#'>>"2#cU"T[[M N*O P 869J8KK]^__r   c                J    V R V P                    R2V RV P                    R2.# r  rw    = n_r  r   r   r   r   ZTypeMultiAttr._setter_lines  4    (#dkk]!,*E$++a02 	2r   )r[  )r$   r%   r&   r'   r6   rb   rt   r~   r   r   r   r   r   r   r   r   r(   r)   r   r   r   r   rZ  rZ    sH     #
O&7,3,1`$2 2r   rZ  c                   s\   a a ] tR tRt oR tR tR tV 3R ltR tR t	R t
R	 tR
tVtV ;t# )TypeArrayNesti  c                r   r\  r    r!   r   r   rb   ZTypeArrayNest.is_multi_val  rc   r   c                r   r<  r    r!   r   r   rt   ZTypeArrayNest.presence_type  r=  r   c                s   R V P                   9  g   V P                   R ,          R8X  d   V P                  # V P                   R ,          \        9   d/   VP                  R8X  d   RMRpW P                   R ,          ,           # V P                   R ,          R8X  d   RV P                  9   d   R# \        RV P                   R ,           R	24      h)
r:  r]  ru   rv   rU   r^  r   Nr`  ra  )r7   rB   rb  rc  r/   r_   rd  r   r   r~   Z"TypeArrayNest._complex_member_type"  s    TYY&$))J*?6*I***YYz"g-!#!6BJ		* 555YYz"h.;$++3Mi		*(='>>PQRRr   c                s   < V P                   R 8X  dE   RV P                  9   d4   RV P                   RV P                  R,           R2RV P                   2.# \        SV `  V4      # )r^  r   zunsigned char (*z)[]r   )sub_typer/   rC   r5   r   re  rf  r   r   ZTypeArrayNest.arg_member-  sb    ==H$)C&t{{m2dkk+6N5OqQ%dkk]35 5w!"%%r   c                s   V P                   R ,          \        9   d!   R\        V P                  R,          4       R2# V P                   R ,          R8X  d)   RV P                  9   d   RV P                  R,           R2# RV P
                   R2# )	r:  r  r   r   r^  r   z.type = YNL_PT_BINARY, .len = rM  rN  )r7   rb  r   rt  r/   r?   r!   r   r   r   ZTypeArrayNest._attr_typol3  s|    99Z G+%gdmmB.?&@%ADDYYz"h.;$++3M3DKK4L3MRPP3D4K4K3LGTTr   c                sZ    R .pRV P                    R2RRRRV P                    R2R.pVR	V3# )
zconst struct nlattr *attr2;attr_z = attr;z'ynl_attr_for_each_nested(attr2, attr) {z$	if (ynl_attr_validate(yarg, attr2))z		return YNL_PARSE_CB_ERROR;z	n_rk  r   Nr  )r"   rp   r   r   rX  r7  r   r   ZTypeArrayNest._attr_get;  sL    34
T[[M2><5DKK=,	 $
**r   c           	     s
   VP                   P                  R V P                   R24       V P                  \        9   d   V P                  pVP                   P                  RV RV P                   R2R7       VP                   P                  RV RV RV P                   R	24       VP                   P                  4        EM%V P                  R
8X  d   RV P                  9   dn   VP                   P                  RV RV P                   R24       VP                   P                  RV RV P                   RV P                  R,           R24       MV P                  R8X  df   VP                   P                  RV RV P                   R24       VP                   P                  V P                   RV RV P                   R	24       M \        RV P                  R,           R24      hVP                   P                  R4       R# )z!array = ynl_attr_nest_start(nlh, r   rh  r?  ri  r   r   z	(nlh, i, r   rj  r^  r   zynl_attr_put(nlh, i, z[i], r]  z_put(nlh, i, &zPut for ArrayNest sub-type r:  z not supported, yetzynl_attr_nest_end(nlh, array);N)r   r   r4   rt  rb  r   rC   r   r/   r?   r_   r7   rm  rS   r   r   ZTypeArrayNest.attr_putE  s   
3DNN3C2FG==G#}}HEE%5cU)DKK=PV#WXEEGGmH:Yse2dkk]%PQEEOO]]h&;$+++EEEGG&se9T[[MHIEEGG+C54;;-uT[[Q\E]D^^`ab]]f$EEGG&se9T[[MHIEEGGt../~cU"T[[MQVWX9$))J:O9PPcdee
01r   c                rn  ro  r  r   r   r   r   ZTypeArrayNest._setter_linesV  rq  r   r    )r$   r%   r&   r'   rb   rt   r~   r   r   r   r   r   r(   r)   r   r   r   r   rr  rr    s4     	S&U+2"2 2r   rr  c                   2   a  ] tR tRt o R tR tR tRtV tR# )TypeNestTypeValuei[  c                rE  rH   rF  ro   rq   r   r~   Z&TypeNestTypeValue._complex_member_type\  rG  r   c                rK  rL  rO  r!   r   r   r   ZTypeNestTypeValue._attr_typol_  rP  r   c                sP   R pRp. p. pRV P                    R2RV RV P                   R2.pRV P                  9   d   V P                  R,           Uu. uF  p\        V4      NK  	  p	pVRR	P	                  V	4       R2.,          pVR
RP	                  V	4       R2.,          pV P                  R,           F7  p
\        V
4      p
VRV
 RV R2.,          pWZ RV
 R2.,          pRV
,           pK9  	  RRP	                  V	4       2pWPP                    RV V R2.,          pWWV3# u upi )r7   rU   rS  rT  rU  r   rw   
type-valueconst struct nlattr *attr_z, *attr___u32 r   ru  z = ynl_attr_data(r   z = ynl_attr_type(attr__parse(&parg, )r?   rC   r7   r   r   )r"   rp   r   prevZtv_argsrX  r   r   r   Ztv_namesZlevels   &&&        r   r   ZTypeNestTypeValue._attr_getb  sa   	
+D,C,C+DFK%cU"T[[M;=
499$,0IIl,CD,Cq
,CHD7
8Q7RRSTUUJVDIIh$7#8:;;J<00eW,=dV2FGG	'=eWBGHH		 1 499X./0G001vgYbQRR	j00 Es   D#r    N)	r$   r%   r&   r'   r~   r   r   r(   r)   r*   r,   r   rw  rw  [  s     'Q1 1r   rw  c                   >   a a ] tR tRt oV 3R ltR tR tRtVtV ;t	# )TypeSubMessageiy  c                sH   < \         SV `  WW44       \        W24      V n        R # rH   )r5   r6   Selectorselectorr   r   r   r6   ZTypeSubMessage.__init__z  s    47 0r   c                s    R V P                    R2pVR,          pV P                  P                  4       '       g0   VRV P                  V R,          ,          P                   R2,          pV# )rM  rN  z.is_submsg = 1, z.selector_type = r  r   )r?   r  is_externalr8   r   r  r`   r   r   ZTypeSubMessage._attr_typol  se    01H1H0IQ## }}((**(tJ7G)H)N)N(OqQQEr   c                s8   \        V R ,          4      pV P                  P                  4       '       d   RV 2pMV RV 2pRV R2RV P                  V R ,          3,          RV P                   RV R2R	.pR
V P                   R2RV RV P
                   R2.pWVR3# )r  Z_sel_r   zif (!r   z+return ynl_submsg_failed(yarg, "%s", "%s");r   r{  z, attr))r   rS  rT  rU  rw   N)r   r  r  r   r?   rC   )r"   rp   r   rW  Zsel_varrX  r      &&&    r   r   ZTypeSubMessage._attr_get  s    d:&'==$$&&cUmGRuoGWIQ'BD$4564223>'(S1	3	
 ,D,C,C+DFK%cU"T[[M;=
d**r   )r  )
r$   r%   r&   r'   r6   r   r   r(   r)   r   r   r   r   r~  r~  y  s     1
+ +r   r~  c                   rv  )r  i  c                s    VR ,          V n         V P                   V9   d2   W P                   ,          V n        RV P                  n        RV n        R# RV n        RV n        R# )r  TFN)r   r7   r<   	_external)r"   Zmsg_attrr8   r   r   r6   ZSelector.__init__  sK    Z(	99  +DI$(DII!"DN DI!DNr   c                s    Wn         R # rH   rg  )r"   r7   rq   r   set_attrZSelector.set_attr  s    	r   c                rE  rH   )r  r!   r   r   r  ZSelector.is_external      ~~r   )r  r7   r   N)	r$   r%   r&   r'   r6   r  r  r(   r)   r*   r,   r   r  r    s     
" r   r  c                   sN   a  ] tR tRt o RR ltR tR tR tR tR t	R	 t
R
tV tR# )Structi  Nc                s   Wn         W n        VP                  V,          V n        Ve   TM. V n        . V n        R V n        V'       d   R\        V4      ,           V n        W`n        VR J V n	        VP                  \        V4      8X  d   \        VP                  4      V n        M(\        VP                  R,           V,           4      V n        RV P                  ,           V n        V P                  '       d*   W!P                  9   d   V ;P                  R,          un        V P                  R,           V n        \!        4       V n        RV n        RV n        RV n        RV n        . V n        \/        4       V n        Ve8   V F0  pV P,                  P3                  WpP                  V,          34       K2  	  M@V P                   F0  pV P,                  P3                  WpP                  V,          34       K2  	  ^ pR V n        V P,                   F6  w  rV
P6                  V8  d   V
P6                  pWn        WP0                  V	&   K8  	  R # )Nr3   r   r   r   F)r@   
space_namerI   r8   
_inherited	inheritedfixed_headerr   submsgrF   r   r>   render_namestruct_namerA   ptr_namesetchild_nestsr:   r;   rD  in_multi_val	attr_listdictattrsr   attr_max_valr   )r"   r@   r  	type_listr  r  r  tmax_valr   r7   s   &&&&&&&    r   r6   ZStruct.__init__  s   $((4'0'<)"  )GL,A AD4';;'*--&v'8'89D&v'8'83'>'KLD$t'7'77;;;:6#((4/5
!V
 %%q--*:&;=  ]]%%q--*:&;= #  ..JDzzW$**$(!#JJt	 )r   c              #  s:   "   V P                    R j  xL
  R #  L5irH   r  r!   r   r   __iter__ZStruct.__iter__  s     ::s   c                s(    V P                   V,          # rH   r  r"   keyrq   r   __getitem__ZStruct.__getitem__  s    zz#r   c                rE  rH   )r  r!   r   r   rY  ZStruct.member_list  r  r   c                s    V P                   V8w  d   \        R 4      h\        V P                   4       Uu. uF  p\        V4      NK  	  upV n        R# u upi )z*Inheriting different members not supportedN)r  r_   sortedr   r  )r"   Znew_inheritedr   r   r   set_inheritedZStruct.set_inherited  sB    ??m+HII.4T__.EF.E'!*.EFFs   Ac                s    . pV P                    FZ  w  r#\        V\        4      '       g   K  VP                  P	                  4       '       g   K?  VP                  VP                  4       K\  	  V# rH   )r  rP   r~  r  r  r   )r"   Zselsr   r7   r  r   rV  ZStruct.external_selectors  sM    ..JD$//DMM4M4M4O4ODMM* ) r   c                sb    V P                    F  w  rVP                  4       '       g   K   R # 	  R# )TF)r  r   )r"   r   r7   r   r   r   ZStruct.free_needs_iter  s)    ~~GA##%% & r   )r  r  r  r8   r  r  r@   r  r  r  rF   r  rD  r  r;   r:   r  r  r  )NNNN)r$   r%   r&   r'   r6   r  r  rY  r  rV  r   r(   r)   r*   r,   r   r  r    s/     -$^G
 r   r  c                   >   a a ] tR tRt oV 3R ltV 3R ltRtVtV ;t# )	EnumEntryi  c                s0  < \         SV `  WW44       V'       d'   V P                  VP                  ^,           8g  V n        MV P                  ^ 8g  V n        V P                  ;'       g    V P                  R,          R8H  V n        RV n        \        V R4       R# )r   r.   r   NrC   )r5   r6   r   value_changeenum_setrC   rE   )r"   r  yamlr|  value_startrG   r   r   r6   ZEnumEntry.__init__  su    ;!%tzzA~!=D!%qD --QQv1F'1Q hr   c                s   < V P                  \        4       4       \        V P                  P                  V P
                  ,           4      V n        R # rH   )r  r5   r   r  	value_pfxr   rC   r  r  r   ra   ZEnumEntry.resolve  s0     dmm55		ABr   )rC   r  	r$   r%   r&   r'   r6   ra   r(   r)   r   r   r   r   r  r    s      C Cr   r  c                   r}  )EnumSeti  c                sd  < \        VP                  R ,           VR,          ,           4      V n        RV9   dH   VR,          '       d1   R\        VR,          4      ,           V n        V P                  V n        M RV n        MRV P                  ,           V n        V P                  '       d   V P                  V n        MRV n        VP
                  ! RVP                   R VR,           R 24      V n        VP
                  ! RR4      V n        VP
                  ! RR4      V n        \        SV `)  W4       R# )	r   r   	enum-nameenum Nr   r]   rV   zenum-cnt-name)r   r>   r  r4   r  r9   r  rV   enum_cnt_namer5   r6   r"   r@   r  rG      &&&r   r6   ZEnumSet.__init__  s    "6#4#4s#:T&\#IJ$K  !(743D+E!E!%!%$t'7'77DN>>>!^^DN"DN-F4E4E3FaV~UV1WXhhx.!XXot<&r   c                    \        WW#4      # rH   )r  )r"   entryZ
prev_entryr  r   r   	new_entryZEnumSet.new_entry%  s    j>>r   c                s^   \        V P                  P                  4        Uu. uF  qP                  NK  	  up4      p\	        V P                  P                  4        Uu. uF  qP                  NK  	  up4      pW2,
          ^,           \        V P                  4      8w  d   R# W#3# u upi u upi )r   NN)r  r  valuesr   r  r0   )r"   r   r
  r  r  r   r	  ZEnumSet.value_range(  s    DLL$7$7$9:$9q77$9:;T\\%8%8%:;%:GG%:;<:>S..y ;;s   B%B*)r  r4   rV   r  r  r  )
r$   r%   r&   r'   r6   r  r	  r(   r)   r   r   r   r   r  r    s     '.? r   r  c                   r}  )AttrSeti2  c                s(  < \         SV `  W4       V P                  f   RV9   d   VR,          pMKV P                  VP                  8X  d   VP                  R,           pMVP                   RV P                   R2p\        V4      V n        \        V P                  P                  RV P                   R24      4      V n	        \        V P                  P                  RRV P                   R24      4      V n
        MVP                  V P                  ,          P                  V n        VP                  V P                  ,          P                  V n	        VP                  V P                  ,          P                  V n
        R V n        \        V R4       R # )	Nr]   z-a-r   zattr-max-namer  zattr-cnt-namerv   rC   )r5   r6   rJ   r   r>   r   r^   r  r9   max_namecnt_namerI   rC   rE   )r"   r@   r  r|   rG   s   &&& r   r6   ZAttrSet.__init__3  s3   &>>!$=)fkk)''%/**+3tyyk;&s|D#DIIMM/dFVFVEWWZC[$\]DM#DIIMM/RHXHXGYY\C]$^_DM%//?KKD",,T^^<EEDM",,T^^<EEDM hr   c                s    \        V P                  4      V n        V P                  \        9   d   V ;P                  R ,          un        V P                  V P                  P                  8X  d
   RV n        R# R# )r   rU   N)r   r   rC   rD   r@   r!   r   r   ra   ZAttrSet.resolveI  sN    dii(;;%KK3K;;$++,,,DK -r   c                s   VR ,          \         9   d   \        V P                  WV4      pEMVR ,          R8X  d   \        V P                  WV4      pEMVR ,          R8X  d   \	        V P                  WV4      pEMVR ,          R8X  d   \        V P                  WV4      pEMVR ,          R8X  d   \        V P                  WV4      pEMvVR ,          R8X  dl   RV9   d   \        V P                  WV4      pEMHVP                  R4      \         9   d   \        V P                  WV4      pEM\        V P                  WV4      pMVR ,          R8X  d   \        V P                  WV4      pMVR ,          R	8X  d   \        V P                  WV4      pMVR ,          R
8X  dC   RV9   d<   VR,          R9   d   \        V P                  WV4      pMv\        RVR,           24      hVR ,          R8X  d   \        V P                  WV4      pM;VR ,          R8X  d   \!        V P                  WV4      pM\        RVR ,           24      hRV9   d'   VR,          '       d   \#        V P                  WW#4      pV# )r.   ZunusedZpadflagr_  r^  r3  r:  
bitfield32r]  indexed-arrayznew_attr: unsupported sub-type znest-type-valuer2   zNo typed class for type 
multi-attr)r^  r]  rh   )rb  r   r@   r   r   r  r  r2  r9   r9  r,  r@  rB  rr  r_   rw  r~  rZ  )r"   elemr   r  rS   r   new_attrZAttrSet.new_attrP  s   <7"4;;E:A&\X%4;;E:A&\U"T7A&\V#d%8A&\X%4;;E:A&\X%4$T[[$eD*%0)$++t5It{{D>&\\)t{{D>A&\V#d%8A&\_,t1CJ#<<!$++t5A"A$zBRAS TUU&\..!$++t5AA&\]*t{{D>A6tF|nEFF4D$6$6dkk4u@Ar   )rC   r  r  r^   )
r$   r%   r&   r'   r6   ra   r  r(   r)   r   r   r   r   r  r  2  s      ,% %r   r  c                   sD   a a ] tR tRt oV 3R ltV 3R ltR tRtVtV ;t	# )	Operationix  c                s  < R F,  pR	 F#  p W%,          V,          P                  R. 4       K%  	  K.  	  \        SV `  WW44       \	        VP
                  R,           V P                  ,           4      V n        R V9   ;'       d.    RVR ,          9   ;'       d    RV9   ;'       d    RVR,          9   V n        RV n	        RV n
        \        V R4       R#   \         d     K  i ; i)
dodumpr:   
attributesr   FNr4   )r  r  eventr:   r;   )Z
setdefaultZKeyErrorr5   r6   r   r>   r   r  dual_policyhas_ntfr4   rE   )r"   r@   r  	req_value	rsp_valuemoder   rG   s   &&&&&  r   r6   ZOperation.__init__y  s    +D1	Jy)44\2F 2 , 	y<"6#4#4s#:TYY#FG DL HDY$t*-D H H D.FFY$v,-F 	  k"   s   CC C c                s6  < V P                  \        4       4       V P                  '       g8   V P                  P                  \        V P                  4      ,           V n        R # V P                  P                  \        V P                  4      ,           V n        R # rH   )	r  r5   is_asyncr@   r   r   r   r4   async_op_prefixr  r  r   ra   ZOperation.resolve  sX     }}}![[22WTYY5GGDN![[887499;MMDNr   c                    R V n         R# rM   )r  r!   r   r   mark_has_ntfZOperation.mark_has_ntf  s	    r   )r  r4   r  r  )
r$   r%   r&   r'   r6   ra   r  r(   r)   r   r   r   r   r  r  x  s     #,N r   r  c                   r  )
SubMessagei  c                s   < \         SV `  W4       \        VP                  R ,           VR,          ,           4      V n        R# )r   r   N)r5   r6   r   r>   r  r  r  r   r6   ZSubMessage.__init__  s1    &"6#4#4s#:T&\#IJr   c                s:   < V P                  \        4       4       R # rH   )r  r5   r  r  r   ra   ZSubMessage.resolve  s     r   )r  r  r   r   r   r  r    s     K
! !r   r  c                   s   a a ] tR tRt oV 3R ltV 3R ltR tR tR tR t	R t
R	 tR
 tR tR tR tR tR tR tR tR tR tRtVtV ;t# )Familyi  c                s  < R V n         \        V R4       R V n        \        V R4       R V n        \        V R4       R V n        \        V R4       R V n        \        V R4       R V n        \        V R4       \        SV `!  WR7       \        V P                  P                  RV P                  R	,          R
,           4      4      V n        \        V P                  P                  RV P                  R	,          R,           4      4      V n        RV P                  9  d   . V P                  R&   RV P                  9   d   V P                  R,          V n        MRV P                   R2V n        V P                  P!                  R4      '       d8   V P                  P#                  R4      '       d   V P                  ^R V n        R # V P                  V n        R # )NrC   r   r  mcgrpsrA   hooks)exclude_opszc-family-namer   Z_FAMILY_NAMEzc-version-nameZ_FAMILY_VERSIONdefinitionszuapi-headerzlinux/.h)rC   rE   r   r  r  rA   r  r5   r6   r   r  r9   fam_keyver_keyuapi_headerr>   
startswithr   uapi_header_name)r"   Z	file_namer  rG   r  r   r6   ZFamily.__init__  sk   hk"#'(hh
g<tyy}}_dii>OR`>`abtyy}}-=tyy?PSd?def		)')DIIm$DII%#yy7D!''8;D&&x00T5E5E5N5Nt5T5T$($4$4Qr$:D!$(OOD!r   c                s  < V P                  \        4       4       \        V P                  4      V n        R V P
                  R,          9   d*   \        V P
                  R,          R ,          4      V n        M(\        V P
                  R,          R,           4      V n        RV P
                  R,          9   d*   \        V P
                  R,          R,          4      V n        MV P                  V n        V P
                  P                  RR. /4      V n
        \        4       V n        R F  p\        4       V P                  V&   R Fc  p\        4       V P                  V,          V&   \        4       V P                  V,          V,          R&   . V P                  V,          V,          R&   Ke  	  K  	  \        4       V n        \        4       V n        V P!                  4        V P#                  4        V P%                  4        V P'                  4        V P)                  4        V P+                  4        V P-                  4        V P
                  P                  RR	4      V n        V P.                  R
8X  d   V P1                  4        R# R# )r]   
operationsr   z-cmd-async-prefixzmcast-groupsr.  r  zkernel-policysplitglobalNprepostr  r  )r  r5   r   r>   rC   r  r   r   r  r9   r  r  r  r  	root_setsrC  _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"   whenop_moderG   s   &  r   ra   ZFamily.resolve  s    doo.DIIl33$TYY|%<]%KLDN$TYYv%6%@ADNTYY|44#*499\+B>+R#SD #'>>D iimmNVRLAV
#D#vDJJt),0F

4 )365

4 )%046

4 )&1 * $ #'6  ##%!YY]]?GD)$$& *r   c                    \        W4      # rH   )r  r"   r  rq   r   new_enumZFamily.new_enum      t""r   c                r  rH   )r  r  rq   r   new_attr_setZFamily.new_attr_set  r  r   c                r  rH   )r  )r"   r  r  r  r   r   new_operationZFamily.new_operation  s    Y::r   c                r  rH   )r  r  rq   r   new_sub_messageZFamily.new_sub_message  s    $%%r   c                     V P                   R 8H  # )znetlink-rawZprotor!   r   r   r   ZFamily.is_classic  s    zz]**r   c                s    V P                   P                  4        F4  pR V9   g   K  V P                  VR ,          ,          P                  4        K6  	  R# )notifyN)msgsr  opsr  r"   rn   r`   r   r  ZFamily._mark_notify  s9    ))""$B2~H&335 %r   c                s    V P                   R ,          R,           F#  pRV9   g   K  RRVR,          R,          //VR&   K%  	  R# )r  r.  r  r;   r  r  N)r  r  r`   r   r  ZFamily._mock_up_events  sE    ))L)&11B"}$bk,&?4 2r   c                s0   V P                   P                  4        EFv  w  rR V9  d   K  \        4       p\        4       pR F  pWR9   d<   RW%,          9   d/   VP                  \        W%,          R,          R,          4      4       WR9   g   KL  RW%,          9   g   K[  VP                  \        W%,          R,          R,          4      4       K  	  RV9   d)   VP                  \        VR,          R,          4      4       VR ,          V P                  9  d   RVRV/V P                  VR ,          &   EK  V P                  VR ,          ,          R,          P                  V4       V P                  VR ,          ,          R,          P                  V4       EKy  	  R# )attribute-setr:   r  r;   r  Nr  )r  itemsr  updater  )r"   op_namern   Z	req_attrsZ	rsp_attrsr  s   &     r   r  ZFamily._load_root_sets  s+   99??,KGb(II)=Y"+%=$$SY)?)M%NO=W%;$$SW)=l)K%LM	 *
 "}  R[%>!?@/"$..87@)WV_6`r/23r/23I>EEiPr/23G<CCIN% -r   c                s   \        V P                  P                  4       4      p\        4       p\	        V4      ^,          p\        V4       F  p\	        V4      ^ 8X  d    R# VP                  ^ 4      pRpV P                  V,          P                  4        F  w  rGRV9   d   VR,          pMRV9   d   VP                  pMK,  V P                  V,          P                  '       d   KQ  W9  g   KY  V P                  P                  V4      p	WP                  V&   Rp M	  V'       d   VP                  V4       K  VP                  V4       EK  	  R# )i   Tr1   r2   FN)r.  rC  keysr  r0   r   poprI   r  sub_messagerD  addr   )
r"   Zpns_key_listZpns_key_seenZroundsr   r   Zfinishedr   rF   r3  s
   &         r   _sort_pure_typesZFamily._sort_pure_types"  s   D4499;<u\"a'vA< A%##A&DH>>$/557&$.!"56F"d*!--F ++F3===-!5599$?F5;,,T2$H! 8"   &##D)3 r   c                s   \        4       pVR ,          pW0P                  9  d<   W0P                  9  d+   \        WVVP	                  R4      R7      V P                  V&   M\        RV 24      hRV9   d>   W0P                  9   d   \        R4      hVP                  \        VR,          4      4       MVR,          R8X  d   VP                  R4       V P                  V,          P                  V4       V# )	r1   fixed-header)r  r  z2Using attr set as root and nested not supported - rx  z8Inheriting members to a space used as root not supportedr.   r  Zidx)	r  r  rC  r  r9   r_   r  r   r  )r"   r   ZinheritrF   r   r   _load_nested_set_nestZFamily._load_nested_set_nestB  s    %)*'55547(,(@B ((0 PQWPXYZZ4' Z[[NN3tL123&\_,KK  (66w?r   c           	     sZ   V P                   VR ,          ,          pVP                  p. pVP                  P                  4        Fr  w  rVRVRV/pRV9   d/   VRRRVR,          /,          pRV9   d   VRVR,          /,          pM!RV9   d   VRRR	VR,          /,          pMR
VR&   VP	                  V4       Kt  	  \        V RVRV P                  R,           VP                  ,           R,           RV/4      V P                  V&   W0P                  9  d   \        WVR7      V P                  V&   V# )r2   r   r\   r  r.   r]  r1   r  r^  r3  r  zname-pfxr   r  )r  )	Zsub_msgsr   Zformatsr  r   r  rI   rC  r  )r"   r   r  rF   r  r   Zfmtr7   s   &&      r   _load_nested_set_submsgZFamily._load_nested_set_submsgW  s>    tM23--/ID$dD #%F'_)=  "S(nc..ACCD3&Hc.1 
  &VLL' 0* ")F		C$))3c9%0
 "v 111/5d6/RD$$V,r   c                s   \        V P                  P                  4       4      p\        V P                  P                  4       4      p\	        V4      '       d   VP                  ^ 4      pV P                  V,          P                  4        Fc  w  rERV9   d   V P                  V4      pMRV9   d   V P                  V4      pMK9  Wb9  g   KA  VP                  V4       VP                  V4       Ke  	  K  V P                  P                  4        F  w  rxV P                  V,          P                  4        F  w  rERV9   d   VR,          pMRV9   d   VP                  pMRpV'       g   K6  WHR,          9   d   RV P                  V,          n        WHR,          9   d   RV P                  V,          n        VP!                  4       '       g   K  V P                  P#                  V4      p	RV	n        K  	  K  	  V P'                  4        \)        V P                  P                  4       4       EFM  w  rV P                  V
,          P                  4        EF!  w  rWP*                  9   d   RVn        RV9   d   VR,          pMRV9   d   VP                  pMKD  VP*                  P                  V4       V P                  P#                  V4      p	V	'       g   K  V	P,                  '       g&   VP*                  P/                  V	P*                  4       V	;P                  VP                  ,          un        V	;P                  VP                  ,          un        VP!                  4       '       g   EK  RV	n        EK$  	  EKP  	  V P'                  4        R# )r    r1   r2   Nr:   Tr;   )r.  r  r  r  r0   r  rI   r  r  r  r   r   r  rC  r:   r;   rb   r9   r  r  reversedr  rD  r  )r"   Zattr_set_queueZattr_set_seenZa_setr7   r   rF   root_set
rs_memberschildr8   r3  r   
child_names   &             r   r  ZFamily._load_nested_sets~  s   dnn1134DNN//12.!!"&&q)E"nnU399;
&$.!77=F"d*!99$?F."))&1!%%f- < %)NN$8$8$: H"nnX6<<>
&$.!"56F"d*!--F!F6)44CG008@'22AE008>((** $ 8 8 < <V D-1*! ? %;& 	 !))A)A)G)G)I JH>>(399;111'+F$&$.!%&9!:J"d*!%!1!1J""&&z20044Z@5 ???**11%2C2CDMMV^^3MKK6<</K((**-1*' < !K, 	r   c                sN   V P                   P                  4        F}  w  rVP                  '       d*   VP                  4        F  w  rVP	                  4        K  	  VP
                  '       g   KT  VP                  4        F  w  rVP                  4        K  	  K  	  V P                  P                  4        Fk  w  rEV P                  V,          P                  4        FA  w  rgWeR ,          9   d   VP	                  4        WeR,          9   g   K1  VP                  4        KC  	  Km  	  R# )r:   r;   N)	rC  r  r:   rY  rN   r;   rO   r  rI   )r"   r   r3  r   r  r  r7   r      &       r   r  ZFamily._load_attr_use  s    11779IA~~~$002FAOO% 3|||$002FAMMO 3 : %)NN$8$8$: H"nnX6<<>
i00$$&g..NN$	 ? %;r   c                s  a  V 3R  lpV! 4        F  w  r#S P                   V,          P                  4        F  w  rERV9   d   VR,          pMRV9   d   VP                  pMK,  S P                  P	                  V4      pVP                  4        Fe  pVP                  S P                   V,          9   d8   S P                   V,          VP                  ,          p	VP                  V	4       K\  \        R4      h	  K  	  K  	  R# )c               3   s   <"   \        SP                  P                  4       4       F
  w  rW3x  K  	  SP                  P                  4        F  w  rV R 3x  K  	  R # 5irH   )r  rC  r  r  )Zkvr   r"   s      r   all_structsZ2Family._load_selector_passing.<locals>.all_structs  sP      !9!9!?!?!ABd
 C,,.g /s   AA r1   r2   z7Passing selector thru more than one layer not supportedN)	rI   r  r  rC  r9   rV  r   r  r_   )
r"   r  r8   r3  r   r   r	  r  r  Zsel_attrs
   f         r   r  ZFamily._load_selector_passing  s    	 !,H>>(399;&$.!%&9!:J"d*!%!1!1J0044Z@ % 8 8 :H}}x(@@#'>>(#;HMM#J ))(3'(abb !; < !.r   c                s   \        4       pR pV P                  P                  4        F  w  r4V'       g   K  RV9  d   K  Vf
   VR,          pW$R,          8w  d   \        R4      hR FM  pWT9   g   K  WE,          P	                  R4      pV'       g   K,  VP                  VP	                  R. 4      4       KO  	  K  	  . V n        W n        V P                  V,           F&  pWq9   g   K  V P                  P                  V4       K(  	  R # )Nr  z1For a global policy all ops must use the same setr:   r  r  )
r  r  r  r_   r9   r  global_policyglobal_policy_setrI   r   )r"   Z
global_setZattr_set_namer  rn   r  r   r7   r
  r   r  ZFamily._load_global_policy  s    U
88>>+KGb($ "? 3? 33 STT)=+//)4Cs"))#'',*CD	 * ,"  !.NN=11D!""))$/ 2r   c                s   V P                   P                  4        F  pR F  pW!9  d   K  R F  pW1V,          9  d   K  W,          V,          pW@P                  V,          V,          R,          9   d   KH  V P                  V,          V,          R,          P                  V4       V P                  V,          V,          R,          P	                  V4       K  	  K  	  K  	  R# )r  r  r.  Nr  r  )r  r  r  r   r   )r"   rn   r  r  r      &    r   r  ZFamily._load_hooks   s    ((//#B)$+Dg;. ;t,Dzz$/8?? JJt$W-e488>JJt$W-f5<<TB , * $r   )r  rC   rA   r  r  r  r  r  r  r   rC  r  r  r  r  )r$   r%   r&   r'   r6   ra   r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r(   r)   r   r   r   r   r  r    sm     4@''R##;&+6O**@*%N> @% c004C Cr   r  c                   s6   a  ] tR tRt o RR ltR tR tRtV tR# )
RenderInfoi  Nc                s   W n         VP                  V n        W0n        WPn        W@n        V'       d   VP                  MR pRV n        V'       dd   VP                  '       dR   VP                  VP                  8w  d7   VP                  4       '       d   R\        V4       R2V n        M\        R4      hRV n        RV n        VR8w  dy   RV9   dr   RV9   d]   R	VR,          9   R	VR,          9   8w  d	   RV n        MGR	VR,          9   d+   VR,          R	,          VR,          R	,          8w  d   RV n        MRV n        RV n        W`n        V P                  '       g   VR
,          V n        RV n        V'       d   \        VP                  4      V n        M'\        V4      V n        WbP"                  9   d   RV n        Wn        \'        4       V n        VR8X  d   RV9   d   RMRpR FW  pV'       g   K  . p	WV,          9   d   WE,          V,          R,          p	\+        W P                  VV	R7      V P(                  V&   KY  	  VR8X  d6   \+        W P                  VVR,          R,          R7      V P(                  R	&   R # R # )Nzys->family->hdr_lenr4  r   &Per-op fixed header not supported, yetTFr  r  r;   r  r  r  )r  r  r  r  )r@   nlibr   rc  r  rn   r  fixed_hdr_lenr   r   r_   type_consistenttype_onesider8   type_name_conflictr   r   rA   r   r  r3  r  )
r"   r   r@   rc  rn   r  r8   Z	fixed_hdrZop_dirr  s
   &&&&&&&   r   r6   ZRenderInfo.__init__  s   '' ')BOOt	2"///&"5"55$$&&+9'):L9MQ)OD&#&LNN  $!d?v|rzr$x'W6
-BC+0D(4(RXg->"V*WBU-U+0D('+$$(! }}}/DM"'$RWW-DN$X.DN==(*.'fh"bjdfG*Fr	[( "F 3L AI&,V]]:C7@'BF# + g#)&--7@46wK4M$ODKK  r   c                s    \        V P                  V,          P                  4      ^ 8H  ;'       d     V P                  R,          P                  RJ # )r    r:   N)r0   r3  r  r  r  rq   r   
type_emptyZRenderInfo.type_emptyL  sD    4;;s#--.!3 8 8KK	"//47	8r   c                s~    V P                   R 8H  ;'       d(    VR8H  ;'       d    V P                  P                  4       # )r  r:   )r  r@   r   )r"   r   rq   r   needs_nlflagsZRenderInfo.needs_nlflagsP  s3    ||t#[[	Y(>[[4;;CYCYC[[r   )r8   r   r@   r  rc  r   rn   r  r3  r  r   r  r  rH   )	r$   r%   r&   r'   r6   r  r  r(   r)   r*   r,   r   r  r    s     :Ox8\ \r   r  c                   s   a  ] tR tRt o RR ltR tR t]R 4       tRR lt	R t
RR	 ltRR
 ltRR ltRR ltR tRR ltR tR tR tRtV tR# )
CodeWriteriT  Nc                s    Wn         W0n        R V n        R V n        R V n        ^ V n        RV n        Vf"   \        P                  P                  V n
        R# \        P                  ! R4      V n
        W n        R# )FNw+)r  
_overwrite_nl
_block_end_silent_block_ind_ifdef_blockossysstdout_outtempfileZNamedTemporaryFile	_out_file)r"   r  out_file	overwriter   r   r6   ZCodeWriter.__init__U  s]    	#"	 DI 33D9DI%Nr   c                s&    V P                  4        R # rH   )close_out_filer!   r   r   __del__ZCodeWriter.__del__d  s    r   c                s   V P                   \        P                  P                  8X  d   R # V P                   P	                  4        V P
                  '       go   \        P                  P                  V P                  4      '       d@   \        P                  ! V P                   P                  V P                  RR7      '       d   R # \        V P                  R4      ;_uu_ 4       pV P                   P                  ^ 4       \        P                  ! V P                   V4       V P                   P!                  4        R R R 4       \        P                  P                  V n         R #   + '       g   i     L1; i)NF)Zshallowr  )r$  r!  r"  r#  Zflushr  pathZisfiler&  filecmpZcmpr   ZopenZseekshutilZcopyfileobjZclose)r"   r'  r`   r   r)  ZCodeWriter.close_out_fileg  s    99%		277>>$..#A#A{{499>>4>>5II$..$''8IINN1tyy(3IIOO ( FFMM		 ('s   $AE$$E4	c                s    VP                  R 4      ;'       g+    VP                  R4      ;'       g    VP                  R4      # )r   whilefor)r  )Zclsr   rq   r   _is_condZCodeWriter._is_condu  s4    t$ZZ(@ZZDOOTYDZZr   c                s   V P                   '       d\   R V n         VP                  R4      '       d   RV,           pM3V P                  P                  RV P                  ,          R,           4       V P
                  '       d#   V P                  P                  R4       R V n        V P                  pVR
,          R8X  d
   V^,          pV P                  '       d
   V^,          pVP                  R4      ;'       d    \        P                  V4      V n        V ;P                  VP                  4       R8H  ,          un        V^ ,          R8X  d   ^ pV'       d	   W2,          pV P                  P                  RV,          V,           R,           4       R	# )Fr5  z} 	}
Z
:r   Z#Nr   )r  r  r$  writer  r  r  r   r  r0  Zstrip)r"   r   Zadd_indindrS   r   r   ZCodeWriter.py  s   ???#DOv&&d{		tyy 05 89888IIOOD!DHii8s?1HC1HC!]]3/MMJ4G4G4Mdjjlf447c>CNC		s
T)D01r   c                r  rM   )r  r!   r   r   r   ZCodeWriter.nl  s	    r   c                s    V'       d
   VR ,           pV P                  VR,           4       V ;P                  ^,          un        R# )r   r   N)r   r  r"   r   rq   r   r   ZCodeWriter.block_start  s+    #:Dtcz		Q	r   c                sn   V'       d   V^ ,          R9  d
   RV,           pV ;P                   ^,          un         RV n        V'       gV   V P                  '       d;   V P                  P	                  RV P                   ^,           ,          R,           4       RV n        R# V P                  RV,           4       R# )	r    r   Fr1  r2  Tr   N>   r   rw   )r  r  r  r$  r4  r   r6  rq   r   r   ZCodeWriter.block_end  sr    DG:-:D		Q					A 6 >?"DOFF3:r   c                s   VP                  4       pR pV FW  p\        V4      \        V4      ,           ^O8  d%   V P                  V4       R pV'       d
   VR,          pVRV,           ,          pKY  	  V P                  V4       R# )r   z  r   N)r  r0   r   )r"   docindentZwordsr   Zword   &&&   r   write_doc_lineZCodeWriter.write_doc_line  sh    		D4y3t9$*tDLDC$JD  	tr   c                s
   V'       g   R .pV'       d;   V P                  R4       V P                  RV,           4       V P                  R4       TpVR,          R8w  d
   VR,          pWb RRP                  V4       RV 2,          p\        V4      ^P8  d   V P                  V4       R	# Tp\        V4      ^8  d   V P                  V4       R
pMVR,          R8w  d
   VR,          pWrR,           ,          pR\        V4      ^,          ,          R\        V4      ^,          ,          ,           p\        V4      \        V4      ,
          p	Ws^ ,          ,          p^p
V
\        V4      8  d}   \        V4      \        W:,          4      ,           pV^ ,          R8X  d	   W,          pV^L8  d   V P                  VR,           4       TpM	VR,          pWsV
,          ,          pV
^,          p
K  V P                  VR,           V,           4       R	# )void/*z * r   r   r   (r   r   NrU   r1  r   r   )r   r   r0   )r"   qual_retr   r   r7  rX   Zoneliner  r5  Z	delta_indr   Znext_lens   &&&&&&      r   write_func_protZCodeWriter.write_func_prot  s   8DFF4LFF53;FF5MB<3sNGV1TYYt_-Qvh77w<"FF7Oq6A:FF1IAb\S HA	CZc!fk"SCFQJ%77FSX%		!W#d)m1vDG,Htt|%"}q3wT	aLAFAq3w r   c                s    V'       g   R # \        V4      \        J d   V.pVP                  \        RR7       V F  pV P	                  V4       K  	  V P                  4        R # )NT)r  Zreverse)r.   rW   Zsortr0   r   r   )r"   r   r   r   r   write_func_lvarZCodeWriter.write_func_lvar  sJ    
s"$JC.CFF3K 	r   c                s    V P                  WVR 7       V P                  4        V P                  VR7       V F  pV P                  V4       K  	  V P	                  4        R# ))r>  r   r   )r   N)r?  r   r@  r   r   )r"   r>  r   r   r   r   r   s   &&&&&& r   r   ZCodeWriter.write_func  sQ    hE
3DFF4L r   c                s6   ^ pV F.  p\        V^ ,          4      V8  g   K  \        V^ ,          4      pK0  	  V^,           ^,          ^,          pV F  pRV^ ,          ,           pVRV\        V^ ,          4      ,
          ^,           ^,          ,          ,          p\        V^,          4      \        J d   V\        V^,          4      ,          pM8\        V^,          4      \        J d   VRV^,          ,           R,           ,          pV P	                  V4       K  	  R# )r    #define r1  "N)r0   r.   r   rW   r   )r"   defineslongestZdefiner   r   r   writes_definesZCodeWriter.writes_defines  s    F6!9~'fQi.  aKA%*Fq	)DDWs6!9~59a?@@DF1I#%F1I&fQiC'fQi#--FF4L r   c           	     s   \        V Uu. uF  p\        V^ ,          4      NK  	  up4      pV^,          pV^,           ^,          ^,          pV F  pRV^ ,          ,           pVRV\        V^ ,          4      ,
          ^,
          ^,           ^,          ,          ,          pVR\        V^,          4      ,           R,           ,          pV P                  V4       K  	  R# u upi )r    r   r1  z= r   N)r  r0   rW   r   )r"   r   r   rD  r   r      &&    r   write_struct_initZCodeWriter.write_struct_init  s    '2'Qs1Q4y'231aKA%*CQ<DDWs3q6{2Q6:q@AADD3s1v;&,,DFF4L	  3s   Cc                s&   R pV'       d   R\        V4      ,           pV P                  V8X  d   R # V P                  '       d*   V P                  RV P                  ,           R,           4       V'       d   V P                  RV,           4       W n        R # )NZCONFIG_
#endif /* r   z#ifdef )r   r   r   )r"   ZconfigZconfig_optionr   r   ifdef_blockZCodeWriter.ifdef_block  sk    %7M-FF<$"3"33e;<FF9},-)r   )	r  r   r  r  r$  r&  r  r  r  NT)r    r   r\  )NNrU   r  )r$   r%   r&   r'   r6   r*  r)  Zclassmethodr0  r   r   r   r   r:  r?  r@  r   rE  rG  rI  r(   r)   r*   r,   r   r  r  T  sg     &" [ [22
(!T
* *r   r  r;   _rspr:   _reqrU   r  r  _listr  Z_ntfr  Zautor   ZbreakZcaseZcharrY   ZcontinuerR   Zdoubler5  r   ZexternZfloatr/  Zgotor   Zinliner   ZlongZregisterZreturnZshortZsignedZsizeofZstaticr3  ZswitchZtypedefZunionZunsignedr;  Zvolatiler.  c                 s*    V R 8X  d   R# V R8X  d   R # V # )r;   r:   r    r   r   r   rdirrO  O  s    GIr   c                 s   R V P                    2pV P                  '       g   MV P                  R8X  d   V\        V,           ,          pMVR8X  d&   VR,          pV P                  '       g
   VR,          pMjV P                  '       d>   V'       d   V\        V,           ,          pM:V\
        V P                  ,          ,          pMVR,          pY2'       d   RMR,          pV P                  P                   V 2# )r   r  r:   rL  _dumprK  rM  )r   r  direction_to_suffixr  r  op_mode_to_wrapperr@   rC   )rp   r   r   rX   rS   r   r   r   W  s    F:::	t	(345	!fF???'!!!!!4Y!? @AF0<<F& U'7iix((r   c                 s"    R \        WVR7       2# )r3   r   r   )rp   r   r   r   r   r   r   p  s    YrE:;<<r   c                 s   V'       d   R MRpV P                   P                  pV P                  R8X  d
   VR,          pR.pRV P                   V P                  ,          9   d8   VP                  \	        W4       R2\
        V,          R,           ,           4       RpR	V P                   V P                  ,          9   d   \	        V \        V4      4       R2pV P                  P                  WuWcVR
7       R# )rw   rU   r  rP  zstruct ynl_sock *ysr:   r   r   r   r;   )r7  rX   N)	rn   r  r  r   r   rQ  rO  r   r?  )rp   r   	terminater7  rX   Zfnamer   Zret   &&&&    r   print_prototyperV  t  s    S2FEEE	zzV!"DBEE"**%%y/039LY9WXZ9[8\]^
C"%%

##2tI/03EE#dFCr   c                 sD    \        V R V P                  R,          R7       R# )r:   r7  )r7  N)rV  rn   rp   r   r   print_req_prototyperX    s    B	ruuU|4r   c                     \        V R 4       R# r:   N)rV  rW  r   r   print_dump_prototyper[    s    B	"r   c                 sF   V P                  R VP                   R2R7       ^ pVP                  4        FK  w  r4RpVP                  R8X  d   RVP                   R2pV P                  RW#V3,          4       V^,          pKM  	  V P                  RR7       V P                  4        V P                  R	VP                   R
2R7       V P                  RV^,
           R24       V P                  RVP                   R24       V P                  RR7       V P                  4        R# )const struct ynl_policy_attr z_policy[] =r   rU   r]  z
 .nest = &_nest,z2[%d] = { .type = YNL_PT_SUBMSG, .name = "%s",%s },rw   const struct ynl_policy_nest _nest =.max_attr = r   	.table = _policy,N)r   r  rY  r.   r?   r   r   r   )r   r3  r   r   r   r]  rF  r   put_typol_submsgrc    s	   NN78J8J7K;WNX	A'')	88v 6 67v>D
At_ 		Q * LLcLEEGNN78J8J7K7SNTDD<Awa	 !DD9V''(	12LLcLEEGr   c                 sD    V P                  R VP                   R24       R# )z$extern const struct ynl_policy_nest rT  N)r   r  )r   r3  rq   r   put_typol_fwdrd    s    DD/0B0B/C6	JKr   c                 s:   VP                   '       d   \        W4       R # VP                  P                  pV P	                  RVP
                   RV R2R7       VP                  4        F  w  r4VP                  V 4       K  	  V P                  RR7       V P                  4        V P	                  RVP
                   R2R7       V P                  RV R	24       V P                  R
VP
                   R24       V P                  RR7       V P                  4        R # )Nr\  z_policy[z + 1] =r   rw   r^  r_  r`  r   ra  rb  )r  rc  r8   r  r   r  rY  r   r   r   r   )r   r3  Ztype_maxr   r   r   r   	put_typolre    s    }}}$''HNN78J8J7K8T\S]]deNf$$&r ' LLcLEEGNN78J8J7K7SNTDD<z	#$DD9V''(	12LLcLEEGr   c           	      s   R V 2.pV'       d   VP                   R,           V,           .pV P                  RV R2V4       V P                  4        V'       d)   VP                  R8X  d   V P	                  V RV R24       V P	                  RV RV R	V R
24       V P	                  R4       V P	                  RV RV R24       V P                  4        V P                  4        R# )zint r   r  _strr   z = ffs(z) - 1;r   z < 0 || z >= (int)YNL_ARRAY_SIZE(rR  return NULL;return r   z];N)r  r?  r   r.   r   r   r   )r   r  map_nameZarg_namer   r      &&&&& r   _put_enum_to_str_helperrk    s    8*D$x/0~+d';TBNN		W$
z
&12DD4z(+CH:R	PQDDDD78*AhZr	*+LLNEEGr   c                 sL    VP                  R V P                   R2R.RR7       R# )r  Z_op_strzint oprw   rX   N)r?  rC   r@   r   rq   r   put_op_name_fwdrn    s'    ~&--'@8*UXYr   c                 sr   V P                    R 2pVP                  RV R2R7       V P                  P                  4        F  w  r4VP                  '       g   K  V P
                  VP                  ,          V8w  d   VP                  RV R24       KR  VP                  VP                  8X  d%   VP                  RVP                   RV R24       K  VP                  RVP                   RV R24       K  	  VP                  R	R7       VP                  4        \        WP                   R
,           VR4       R# )Z
_op_strmapstatic const char * const [] =r   z	// skip "z", duplicate reply valuer   ] = "",rw   Z_oprn   N)rC   r   r  r  r  Zrsp_by_valuer   r  r4   r   r   rk  )r@   r   ri  r  rn   r   r   put_op_namers    s    --
+HNN4XJdCND{{((*<<< ""2<<0B6y	)ABC||r||+qeG9B78qeG9B78 + LLcLEEGB 5xFr   c                 sr    VP                   R ,           .pVP                  RVP                   R2VRR7       R# )z valuer  rf  rw   rl  N)r  r?  r  )r@   r   r   r   rS   r   put_enum_to_str_fwdrt    s8    NNX%&D~$*:*:);4'@$sSr   c                 s`   VP                    R 2pVP                  RV R2R7       VP                  P                  4        F/  pVP	                  RVP
                   RVP                   R24       K1  	  VP                  RR7       VP                  4        \        WP                   VRVR	7       R
# )Z_strmapro  rp  r   r   rq  rr  rw   r   )r   N)
r  r   r  r  r   r   r   r   r   rk  )r@   r   r   ri  r  r7  r   put_enum_to_strru    s    ""#7+HNN4XJdCND$$&
qU5::,b12 'LLcLEEGB 0 0(G$Or   c                 s    R RVP                    R2.pV P                  P                  RVP                   R2VVR7       R# )zstruct nlmsghdr *nlhzunsigned int attr_typeobjr   Z_putrl  N)r  r   r?  r  )rp   r3  rX   	func_argsrS   r   put_req_nested_prototyperx    sN    ')OO$C(*I EE%F$6$6#7t!<i!'  )r   c                 sh   . p. pVP                   f#   VP                  R4       VP                  R4       VP                  '       dL   VP                  R4       RVP                   R2pVP                  RV R24       VP                  RV R24       R	pR	pVP                  4        F3  w  rxWXP                  R
8H  ,          pWhP                  4       R8H  ,          pK5  	  V'       d   VP                  R4       V'       d   VP                  R4       \        WRR7       V P                  P                  4        V P                  P                  V4       V F  p	V P                  P                  V	4       K   	  VP                  4        F  w  rxVP                  V R4       K  	  VP                   f   V P                  P                  R4       V P                  P                  4        V P                  P                  R4       V P                  P                  4        V P                  P                  4        R # )Nzstruct nlattr *nest;z+nest = ynl_attr_nest_start(nlh, attr_type);
void *hdr;zsizeof(r   z&hdr = ynl_nlmsg_put_extra_header(nlh, r   zmemcpy(hdr, &obj->_hdr, Fr  ry   zstruct nlattr *array;r   rU   rl  rv  zynl_attr_nest_end(nlh, nest);	return 0;)r  r   r  rY  r.   rt   rx  r   r   r@  r   r   r   r   )
rp   r3  r   r   r6  Z	has_anestZ	has_countr   r   r   s
   &&        r   put_req_nestedr{    s   JJ}}01GH,'f112!4	B9+RPQ4YKrBCII$$&XX00	&&(G33	 ' 12+,R3EEEE*%
  $$&R ' }}
/0EEHHJEEGGKEEOOEEHHJr   c           
      s   VP                   '       d   VR .,          pVP                  '       d'   VP                   '       d   RVP                    R2pMpRpMmRpV P                  P                   V P                  P                   8w  d=   V P                  P	                  4       '       d   RVP                    R2pM\        R4      h\        4       p\        4       pRpVP                  4        F  w  rV	R,          R	8X  d   R
V	9   d   V	R
,          RU9   d2   VP                  RV	P                   R24       VP                  V4       MXV	R
,          \        9   d2   VP                  RV	P                   R24       VP                  V4       M\        RV	R
,           24      hRV	9   d   VP                  V4       VRV	9   ,          pVRV	9   ,          pK  	  V'       g	   V'       d   VP                  R4       V'       d#   VP                  R4       VP                  R4       WV,          p
\        V
4       F(  pVP                  RW,          P                   R24       K*  	  V P                  P                  4        V P                  P                  V4       V F  pV P                  P!                  V4       K   	  V P                  P#                  4        VP$                   F%  pV P                  P!                  RV RV R24       K'  	  VP                   '       d   VP                  '       d   V P                  P!                  R4       MWV P                  P	                  4       '       d   V P                  P!                  R4       MV P                  P!                  R4       V P                  P!                  RVP                    R24       \        V
4       Ft  pW,          p	V P                  P!                  RV	P                   R24       V P                  P!                  R VP&                  P(                   R!V	P(                   R"24       Kv  	  V P                  P#                  4        V P                  P                  VR#7       V P                  P!                  R$4       V P                  P#                  4        R%pVP                  4        F&  w  rVP+                  V R&VR'7      pW'       * ,          pK(  	  V P                  P-                  4        V P                  P#                  4        \        V4       EF  pW,          p	V P                  P                  R(V	P                   R2R#7       V P                  P!                  RV	P                   R)V	P                   R*V	P                   R24       V P                  P!                  R+V	P                   R,V	P                   R24       V P                  P!                  R-4       RV	9   d*   V P                  P!                  R.V	P.                   R/24       V P                  P                  R0V	P                   R2R#7       RV	9   do   V P                  P!                  R1V	P                   R224       V P                  P!                  R3V	P.                   R424       V P                  P!                  R54       MV	P0                  \        9   d8   V P                  P!                  RV	P                   R6V	P0                   R724       MuV	P0                  R8X  dP   R8V	P2                  9   d?   V P                  P!                  R9V	P                   R:V	P2                  R8,           R;24       M\        R<V	R=,           24      hV P                  P!                  R>4       V P                  P-                  4        V P                  P-                  4        EK  	  V P                  P#                  4        \        V4       EFU  pW,          p	V P                  P                  R(V	P                   R2R#7       V P                  P!                  RV	P                   R)V	P                   R*V	P                   R24       V P                  P!                  R+V	P                   R,V	P                   R24       V P                  P!                  R-4       RV	9   d*   V P                  P!                  R.V	P.                   R/24       V P                  P                  VR#7       V P                  P                  R?V	P4                   R2R#7       RV	9   dp   V P                  P!                  R1V	P                   R224       V P                  P!                  R3V	P.                   R@24       V P                  P!                  R54       EM6V	P6                  \        9   d9   V P                  P!                  RV	P                   R6V	P6                   R724       EMV	P6                  R8X  d   RAV	9   d   V P                  P!                  RB4       V P                  P#                  4        V P                  P!                  RCV	P                   RD24       V P                  P!                  REV	P                   RF24       V P                  P!                  RGV	P                   RH24       EMV	P6                  RI8X  d   V P                  P!                  RJ4       V P                  P#                  4        V P                  P!                  RK4       V P                  P!                  RV	P                   RL24       V P                  P!                  RV	P                   RM24       V P                  P!                  R9V	P                   RN24       V P                  P!                  RV	P                   RO24       M\        RPV	P6                   RQ24      hV P                  P!                  R>4       V P                  P-                  4        V P                  P-                  4        V P                  P-                  4        EKX  	  V P                  P#                  4        VP                  '       d   V P                  P!                  RR4       MV P                  P!                  RS4       V P                  P-                  4        V P                  P#                  4        RT# )Vry  z2ynl_attr_for_each_nested_off(attr, nested, sizeof(rR  z&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(r  Fr.   r  r:  r^  ry  rw   zNot supported sub-type r  r1   r2   zint i;struct ynl_parse_arg parg;parg.ys = yarg->ys;r   z = 0;zdst->r  zhdr = ynl_attr_data(nested);zhdr = ynl_nlmsg_data(nlh);z<hdr = ynl_nlmsg_data_offset(nlh, sizeof(struct genlmsghdr));zmemcpy(&dst->_hdr, hdr, sizeof(rl  z	if (dst->r   z9return ynl_error_parse(yarg, "attribute already present (r   z)");r   z(unsigned int type = ynl_attr_type(attr);Tdst)r   zif (n_z = calloc(n_z, sizeof(*dst->zdst->_count.rp  zi = 0;rS  rT  z$ynl_attr_for_each_nested(attr, attr_zparg.data = &dst->z[i];r   z)_parse(&parg, attr, ynl_attr_type(attr)))r   z[i] = ynl_attr_get_r  r   zmemcpy(dst->z[i], ynl_attr_data(attr), r   z#Nest parsing type not supported in r   zi++;zif (ynl_attr_type(attr) == z_parse(&parg, attr))r3  z%size_t len = ynl_attr_data_len(attr);zif (len > sizeof(dst->z[0]))zlen = sizeof(dst->z[0]);zmemcpy(&dst->z[i], ynl_attr_data(attr), len);r_  r(  r'  z2[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;zNest parsing of type ra  rz  return YNL_PARSE_CB_OK;N>   r]  r^  )r  rF   rn   r@   r   r_   r  rY  r   rC   r   rb  r  r   r   r@  r   r   r  r8   r   r   r   r?   rt  r/   r4   r.   )rp   r3  r   r   Z	iter_lineZarray_nestsZmulti_attrsZ
needs_pargr   ZaspecZ	all_multiZanestr   r   r   Zgoods   &&&&            r   _multi_parser  (  s}	   |n$
}}}LVM`M`LaacdI@IM	55!7!77yy##%%B6CVCVBWWYZ	"HJJ%K%KJ((*
=O+
e0CZ $66!!$>u||nA"NO$z"g-!!$>u||nA"NO$"9%
:K9L MNN5 OOC )U22
mu,,
 + k(#67/0)I	"OFM,@,@+AGH # EEEE*%
 EEHHJ
%uCuA&'   ===EEGG23YY!!##EEGG01EEGGRS
1&2E2E1FcJK	"
)ELL>+,
KFOOL`L`Kaabchcmcmbnnrst #
 EEHHJEE9%EEGG67EEHHJE$$&||BU|3 '
 EEOOEEHHJ$
~Q78
%~\%,,u||n\_`a
,u||nE%,,qAB
%'EEGG)%*B*B)C6JK
!Eell^STUV%'EEGG(d;<EEGGd53344]^_EEGG01^^w&EEGGeELL>)<U^^<LGTU^^x'K5<<,GEEGGl5<<.0J5<<XcKdJeeghiA%-QRR


/ %0 EEHHJ$
~Q78
%~\%,,u||n\_`a
,u||nE%,,qAB
%'EEGG)%*B*B)C6JK
y)
!<U__<MQOP%'EEGG(d;<EEGGd53344HIJEEGG01ZZ7"EEGGeELL>)<UZZLPQZZ8#E(9EEGG;<EEHHJEEGG,U\\N%@AEEGG(e<=EEGGmELL>1PQRZZ8#EEGG'(EEHHJEEGGUVEEGGeELL>)[\]EEGGeELL>9:EEGGl5<<.0WXYEEGGeELL>);<=3EJJ<?QRSS



G %H EEHHJ}}}

)*EEOOEEHHJr   c                 s   \        WR R7       RpRVP                   V R2R0pVP                  4        F<  w  rEVP                  W4      w   rFY6'       d   \	        V4      M	\	        4       ,          pK>  	  V P
                  P                  4        V P
                  P                  \        V4      4       V P
                  P                  R4       V P
                  P                  4        RpVP                  4        F  w  rV'       d   RMR	p	R
pV P
                  P                  V	 RV R2R7       VP                  W4      w  rpT;'       g    .  F  pV P
                  P                  V4       K   	  V
 F  pV P
                  P                  V4       K   	  VP                  4       R8X  d,   V P
                  P                  V RVP                   R24       V P
                  P                  4        K  	  V P
                  P                  R4       V P
                  P                  4        V P
                  P                  4        R# )rU   rl  r~  z#const struct nlattr *attr = nested;z = yarg->data;r|  r}  Tr   r   Fz (!strcmp(sel, "z"))r   rs   r   r   rz  N)parse_rsp_nested_prototyper  rY  r   r  r   r   r@  r.  r   r   rt   rC   r   )rp   r3  r   r   r   r   Zl_varsr   r   r   rX  r   r   s   &&           r   parse_rsp_submsgr    s   r"5
C7__%cU.9.0J $$&}}R-1Vc&k6
 ' EEEE$z*+EEGG!"EEHHJE'')	T	
"%5dV3?@#&==#9 	q$$"$DEEGGDM %DEEGGDM )+EEGGse;szzl%89
 * EEGGKEEOOEEHHJr   c                 sv   R R.pVP                  4        F%  pVP                  RVP                  ,           4       K'  	  VP                  '       d   VP	                  ^R4       VP
                   F  pVP                  RV,           4       K  	  V P                  P                  RVP                   R2VVR7       R# )	struct ynl_parse_arg *yargzconst struct nlattr *nestedzconst char *_sel_zconst char *selrz  r   _parserl  N)	rV  r   r   r  Zinsertr  r   r?  r  )rp   r3  rX   rw  rW  r   r9  r   r  r    s    -.0I((*,sxx78 +}}}-.C(   EE%F$6$6#7v!>	!'  )r   c                 s   VP                   '       d   \        W4      # \        WR R7       RVP                   R2.p. pVP	                  4       '       d   \        WW24       R# V P                  P                  4        V P                  P                  R4       V P                  P                  4        V P                  P                  4        R# )rU   rl  const struct nlattr *attr;dst = yarg->data;rz  N)r  r  r  r  rY  r  r   r   r   r   r   )rp   r3  r   r   r   r   parse_rsp_nestedr    s    }}}++r"5.__%%679JJR8 	



r   c           	      sZ   R V P                   V P                  ,          9  d   V P                  R8w  d   R# RR.p\        V R VR7       R2R.pR.pV P                  P	                  R	\        V R VR7       R
2V4       V P                  R ,          P                  4       '       d    \        W P                  R ,          WC4       R# V P                  P                  4        V P                  P                  R4       V P                  P                  4        V P                  P                  4        R# )r;   r  Nzconst struct nlmsghdr *nlhr  r   z *dst;r  r  r   r  r  )rn   r  r   r   r?  r   r3  rY  r  r   r   r   r   )rp   r   rw  r   r   r   r   parse_rsp_msgr  	  s    beeBJJ''BJJ',A--/I r7%89@.0J%&JEE%Ib'$G#H!OQZ[	yy%%''R7+ZD 	
)*


r   c                 s   R pRpRp. R'OpRV P                   V P                  ,          9   d%   RpRpV\        V \        V4      4       R2.,          pV P                  R,          P
                  '       d   VRR.,          pV P                  R,          P                  4        F&  w  rVVP                  4       R	8X  g   K  VR
.,          p M	  \        WRR7       V P                  P                  4        V P                  P                  V4       V P                  P                  4       '       d5   V P                  P                  RV P                   P                   R24       MNV P                  P                  RV P                   P#                  4        RV P                   P                   R24       V P                  P                  RV P                  R,          P$                   R24       V P                  P                  RV P&                   R24       RV P                   V P                  ,          9   d;   V P                  P                  RV P                  R,          P$                   R24       V P                  P!                  4        V P                  R,          P
                  '       dl   V P                  P                  R4       V P                  P                  R4       V P                  P                  R4       V P                  P!                  4        V P                  R,          P                  4        F  w  rVVP)                  V R4       K  	  V P                  P!                  4        RV P                   V P                  ,          9   d   V P                  P                  R4       V P                  P                  R4       V P                  P                  R\+        V R4       R24       V P                   P,                  e5   V P                  P                  R V P                   P                   R24       M3V P                  P                  R V P                   P.                   R24       V P                  P!                  4        V P                  P                  R!4       V P                  P                  R"4       RV P                   V P                  ,          9   d   V P                  P                  R#4       MV P                  P                  R$4       V P                  P!                  4        V P                  P                  R%V R24       V P                  P!                  4        RV P                   V P                  ,          9   dk   V P                  P                  R&4       V P                  P                  \1        V \        V4      R4       4       V P                  P                  R%V R24       V P                  P3                  4        R# )(Z0z-1r:   r;   rspZNULLz *rsp;size_t hdr_len;ry  ry   r   FrT  znlh = ynl_msg_start_req(ys, z, req->_nlmsg_flags);znlh = ynl_gemsg_start_req(ys, r   , 1);ys->req_policy = &rT  ys->req_hdr_len = rw   zyrs.yarg.rsp_policy = &hdr_len = sizeof(req->_hdr);/hdr = ynl_nlmsg_put_extra_header(nlh, hdr_len);!memcpy(hdr, &req->_hdr, hdr_len);r   zrsp = calloc(1, sizeof(*rsp));zyrs.yarg.data = rsp;z	yrs.cb = _parse;Nzyrs.rsp_cmd = zerr = ynl_exec(ys, nlh, &yrs);if (err < 0)zgoto err_free;z
return -1;rh  z	err_free:)z6struct ynl_req_state yrs = { .yarg = { .ys = ys, }, };struct nlmsghdr *nlh;int err;)rn   r  r   rO  r3  r  rY  rt   rV  r   r   r@  r@   r   r   r4   r   r#   r  r  r   r   r   r  	call_freer   )rp   Zret_okZret_errr   r   r   r7   s   &      r   	print_reqr  	  s4   FGIJ "%%

##)BY89@AA
	yy((((#% 	%
 99Y'3357*,--J 6
 BU3EEEE*%	yy
.ruu.??TUV
01D1D1F0Gr"%%//IZZ_`aEEGG 9!5!A!A B&IJEEGG !1!1 2!45"%%

##
)"))G*<*H*H)IPQEEHHJ	yy(((
./
AB
34

99Y'335b%  6EEHHJ"%%

##
01
&'
)Ib'237;<55;;"EEGGnRUU__$5Q78EEGGnRUU__$5Q78

EEGG,-EEGGN"%%

##
 !
EEHHJEEGGgfXQ EEHHJ"%%

##

9Ri%89;
''!$%EEOOr   c           	      sF
   R p\        WRR7       V P                  P                  4        . R$OpV P                  R ,          P                  '       d   VRR.,          pV P                  P                  V4       V P                  P                  R4       V P                  P                  RV P                  R,          P                   R24       V P                  P                  R	4       V P                  P                  R
\        V \        V4      4       R24       V P                  P                  R\        V RRR7       R24       V P                  P                  e5   V P                  P                  RV P                  P                   R24       M3V P                  P                  RV P                  P                   R24       V P                  P                  4        V P                   P#                  4       '       d5   V P                  P                  RV P                  P                   R24       MNV P                  P                  RV P                  P%                  4        RV P                  P                   R24       V P                  R ,          P                  '       dl   V P                  P                  R4       V P                  P                  R4       V P                  P                  R4       V P                  P                  4        R V P                  V P&                  ,          9   d   V P                  P                  RV P                  R ,          P                   R24       V P                  P                  RV P(                   R24       V P                  P                  4        V P                  R ,          P+                  4        F  w  r4VP-                  V R4       K  	  V P                  P                  4        V P                  P                  R4       V P                  P                  R4       V P                  P                  R4       V P                  P                  4        V P                  P                  R 4       V P                  P                  4        V P                  P                  R!4       V P                  P                  \/        V \        V4      R"4      4       V P                  P                  R#4       V P                  P1                  4        R# )%r:   Fr  r  ry  zyds.yarg.ys = ys;zyds.yarg.rsp_policy = &r;   rT  zyds.yarg.data = NULL;zyds.alloc_sz = sizeof(r   z	yds.cb = Tr   r  Nzyds.rsp_cmd = rw   znlh = ynl_msg_start_dump(ys, znlh = ynl_gemsg_start_dump(ys, r   r  r  r  r  r  r  r   z#err = ynl_exec_dump(ys, nlh, &yds);r  zgoto free_list;zreturn yds.first;z
free_list:z	yds.firstrg  )zstruct ynl_dump_state yds = {};r  r  )rV  r   r   r3  r  r@  r   r  r   rO  r   rn   r   r4   r  r   r@   r   r#   r  r  rY  r   r  r   )rp   r   r   r   r7   r  r   
print_dumpr  i	  sm   IBU3EEJ 
yy((((#% 	%
 EE*%EEGG EEGG%bii&8&D&D%EVLMEEGG#$EEGG$Yr4	?%C$DBGHEEGGi	"gT:;7CD	uu{{
. 134
. 134EEHHJ	yy
//@CD
1"%%2E2E2G1H255??J[[`ab	yy(((
./
AB
34

BEE"**%%
$RYYy%9%E%E$FfMN
$R%5%5$6a89

yy+779GAMM"e$ :EEHHJEEGG12EEGGNEEGGEEHHJEEGG EEHHJEEGGLEEGGIb$y/;78EEGGNEEOOr   c                 s$    \        W4       R V R2# )rI  r   rS  )rp   r   r   r   r   r  r  	  s    &'vcU"55r   c                 s>    V '       d   \         V ,          R ,          # R# )r   rv  )rQ  rN  r   r   free_arg_namer  	  s    "9-b11r   c                 s   \        W4      pTpV P                  '       d
   VR ,          pR.pRpV'       d   VP                  '       d   R.pRpV P                  P	                  RV R2V R2V4       V P                  P                  4        V P                  P                  RV R	V R
24       V P                  P                  4        R# )r   r;  Z1zunsigned int nZnzstatic inline struct r   Z_alloczreturn calloc(z, sizeof(struct rl  N)r   r  r  r   r?  r   r   r   )rp   r   r3  r   r  r   cntr  r   print_alloc_wrapperr  	  s    R#DK	s8D
C&%%% !EE1+bA!F&/41EEEEGGnSE!1+cBCEEOOr   c                 s    \        W4      pTpV P                  '       d
   VR ,          p\        V4      pV P                  P	                  RV R2RV RV 2.VR7       R# )r   r;  Z_freer3   r   rl  N)r   r  r  r   r?  )rp   r   rX   r   r  r   r9  r   print_free_prototyper  	  sc    R#DK	s
	
"CEE&TF%.W[MC53Q2R[abr   c                 s:   \        W4      pV P                  P                  R V R2RV R2R.4       V P                  P                  4        V P                  P	                  R4       V P                  P                  4        V P                  P                  4        R# )r   Z_set_nlflagsr3    *reqz__u16 nl_flagszreq->_nlmsg_flags = nl_flags;N)r   r   r?  r   r   r   r   )rp   r   r   r   r   print_nlflags_setr  	  sy    R#DEE.D61F$TF%02BCEEEEEGG+,EEOOEEHHJr   c                 sP   R V P                    \        V,           2pV'       g   V P                  '       d
   VR ,          pV P                  R8X  d   V P                  '       g
   VR,          pV P
                  P                  RV P                  P                   V 2R7       V P                  V4      '       d6   V P
                  P                  R4       V P
                  P                  4        VP                  '       dG   V P
                  P                  VP                  R,           4       V P
                  P                  4        R F  pRpVP                  4        Fl  w  rgVP                  V P                  V4      pV'       g   K+  V'       g   V P
                  P                  RR7       R	pV P
                  P                  V4       Kn  	  V'       g   K  V P
                  P!                  R V R
2R7       K  	  V P
                  P                  4        VP"                   F"  p	V P
                  P                  RV	 R
24       K$  	  VP                  4        F  w  rgVP%                  V 4       K  	  V P
                  P!                  R
R7       V P
                  P                  4        R# )r   r  rP  r3   r   z__u16 _nlmsg_flags;z _hdr;Fr3  Trw   rz  N)rs   r0   ry   )r   rQ  r  r  r  r   r   r@   rC   r  r   r   r  rY  r}   rc  r   r  r   )
rp   r   r3  rX   r{   Zmeta_startedr   r7   r   r   
   &&&       r   _print_typer  	  s   29=>?F...#	zzVBOOO'EEWRYY%5%5$6vh?@		""
%&


##h./

2))+GA''[ADt#EE%%V%5#'L , <EEOO1[M!3O4 3 EEHHJ
&Q    %%'2 ( EEOOOEEHHJr   c                 s@    \        WV P                  V,          4       R # rH   )r  r3  rp   r   rq   r   
print_typer  	  s    ryy34r   c                 s   \        V R V4       VP                  '       d   VP                  '       d   \        V R V4       V P                  P                  4        \        V 4       V P                  P                  4        V P                  R8X  dJ   V P                  '       g8   VP                  4        F#  w  r#VP                  W P                  R RR7       K%  	  V P                  P                  4        R# R# R# )rU   ru   rv  )r   N)r  r:   r  r  r   r   free_rsp_nested_prototyperc  r  rY  r   r8   )rp   r3  r   r7   r   r   print_type_fullr  	  s    B~~~&---BF+

!"%

 ;;& )>)>)>!--/BRU; 0

 .~r   c                 s   \        W4       V P                  P                  4        V P                  V4      '       d   \	        W4       V P
                  R 8X  dO   VR8X  dH   V P                  V,          P                  4        F"  w  r4VP                  W P                  WR7       K$  	  V P                  P                  4        R# )ru   r:   r   N)
r  r   r   r  r  rc  r3  rY  r   r8   )rp   r   r   r   r7   r7  r   print_type_helpersr  
  s    'EEHHJ		"""(	{{fi!7yy+779GAKKKKK@ :EEHHJr   c                 sh    V P                  R 4      '       d   R# \        V R 4       \        V R 4       R# rZ  )r  r  r  rW  r   r   print_req_type_helpersr  
  s(    	}}YI&r9%r   c                 sf    R V P                   V P                  ,          9  d   R# \        V R 4       R# r;   N)rn   r  r  rW  r   r   print_rsp_type_helpersr  "
  s$    beeBJJ''r7#r   c           	      s    VR 8X  d   RMRpV'       d   RMRpV P                   P                  RV P                  P                   V R2RRV P                  P                   V R	2.VR
7       R# )r;   rK  rL  rw   rU   r;  r  zconst struct nlattr **tbr3   r  rl  N)r   r?  rn   r  )rp   r   rT  rX   Ztermr7  r   print_parse_prototyper  (
  sq     G+VF3DEE&RUU%6%6$7xv"F5$RUU%6%6$7xuEG!%  'r   c                 sP    V P                  R 4      '       d   R# \        V R 4       R# rZ  )r  r  rW  r   r   print_req_typer  2
  s    	}}Yr9r   c                     R V P                   V P                  ,          9  d   R# \        V R V P                  R ,          4       R# rZ  rn   r  
_free_typer3  rW  r   r   print_req_freer  8
  s/    bjj))r9bii	23r   c                 s    V P                   R 8X  g   V P                   R8X  d&   RV P                  V P                   ,          9   d   RpMV P                   R8X  d   RpMR# \        W4       R# )r  r  r;   r  N)r  rn   r  r  r`   r   print_rsp_typer  >
  sN    


dbjjF2255CT8T		w		rr   c                 s   V P                   P                  \        V R 4       R7       V P                  R8X  d*   V P                   P	                  \        V R 4       R24       MV P                  R8X  g   V P                  R8X  d{   V P                   P	                  R4       V P                   P	                  R4       V P                   P	                  R4       V P                   P	                  R	\        V R 4       R
24       V P                   P	                  \        V R RR7       R24       V P                   P                  RR7       V P                   P                  4        \        V R 4       V P                   P                  4        R# )r;   r   r  z *next;r  r  z__u16 family;z	__u8 cmd;zstruct ynl_ntf_base_type *next;zvoid (*free)(z *ntf);Tr   z! obj __attribute__((aligned(8)));rw   N)r   r   r   r  r   r   r   r  rW  r   r   print_wrapped_typer  H
  s   EEiG457	zzV
9R)*'23	x	2::#8
 

12
-	"g 67w?@EEGGyWD122STUEEOOOEEHHJW%EEHHJr   c                 s    VP                  4       '       d8   V P                  P                  R 4       V P                  P                  4        R# R# )r   N)r   r   r   r   rp   r3  rq   r   _free_type_members_iterr  X
  s4    
!"

  r   c                 s\    VP                  4        F  w  rEVP                  WV4       K  	  R # rH   )rY  r   )rp   r   r3  r   r   r7   rZ   r   _free_type_membersr  ^
  s%    %%'		"3 (r   c                 sN   \        V4      p\        WR R7       V P                  P                  4        \	        W4       \        WV4       V'       d    V P                  P                  RV R24       V P                  P                  4        V P                  P                  4        R# )rU   rl  r   r   N)	r  r  r   r   r  r  r   r   r   )rp   r   r3  r   rS   r   r  r  c
  sn    
	
"Cr2EEB'r'
%uB EEOOEEHHJr   c                 rY  rU   N)r  rW  r   r   r  r  p
  s    R$r   c                 s     \        V R V4       R# r  )r  r  rq   r   free_rsp_nestedr  t
  s    r2vr   c                 r  r  r  rW  r   r   print_rsp_freer  x
  s/    beeBJJ''r7BIIg./r   c                 s    \        V R 4      p\        V R RR7       V P                  P                  4        V P                  P	                  V R24       V P                  P                  4        V P                  P                  RR7       \        W P                  R ,          4       V P                  P	                  R4       V P                  P	                  R4       V P                  P                  4        \        V RV P                  R ,          R	R
7       V P                  P	                  R4       V P                  P                  4        V P                  P                  4        V P                  P                  4        R# )r;   rU   rl  z *next = rsp;z$while ((void *)next != YNL_LIST_END)r   zrsp = next;znext = rsp->next;r  obj.r   
free(rsp);N)
r   r  r   r   r   r   r  r3  r  r   )rp   rt  r`   r   print_dump_type_freer  ~
  s    W%HWR0EEEEGGxj&'EEHHJEEABB		' 23EEGGMEEGG EEHHJr5"))G"4&AEEGGjEEOOEEOOEEHHJr   c                 sl   \        V R RR7       V P                  P                  4        \        W P                  R ,          4       \        V RV P                  R ,          RR7       V P                  P                  R4       V P                  P                  4        V P                  P                  4        R# )r;   rU   rl  r  r  r  r  N)	r  r   r   r  r3  r  r   r   r   rW  r   r   print_ntf_type_freer  
  sq    WR0EEB		' 23r5"))G"4&AEEGGjEEOOEEHHJr   c           	      s   V'       d&   V'       d   \        VP                  4      '       d   R # V'       d   RpM(V'       d   \        VP                  4      '       d   RpMRpV'       d   RMRpVP                  pV'       dN   VP                  P                  pVP                  P
                  '       d   VRVP                  ,           ,          pMVP                  pV P                  V RV RVP                   R	V 24       R # )
Nextern zstatic rU   rw   z = {r   zconst struct nla_policy z_nl_policy[z + 1])	policy_should_be_staticr@   r  rn   r  r  r  r   r4   )r   r3  rp   rT  ZprefixrX   Zmax_attrr   rU  r   print_req_policy_fwdr  
  s    R3FMMBB)&--88FFS6F""H	uu  55C"**$$D!!DDF8+D6X=O=O<PPUV\U]	^_r   c                 sd   V'       d>   VP                   '       d,   V P                  VP                   P                  R R4      4       \        WVRR7       VP	                  4        F  w  r4VP                  V 4       K  	  V P                  R4       V P                  R4       V P                  4        R# )config-condNF)rp   rT  z};)rn   rI  r9   r  rY  r   r   r   )r   r3  rp   r   r   r7  r   print_req_policyr  
  su    	beee
ruuyy56e<$$& 'DDJNN4EEGr   c                 r  )Z	genetlinkr  r@   r   r   kernel_can_gen_family_structr  
  s    <<;&&r   c                 sF    V P                   R 8H  ;'       g    \        V 4      # )r  )r  r  r  r   r   r  r  
  s!    7*RR.J6.RRr   c           
      s<   R pV P                   P                  4        EFz  w  r4VP                  '       d   K  VP                  4        EFK  w  r5VP                  '       g   K  RVP                  9  d   K-  V'       d   VP                  R4       RpVP                  ^ ,          R8X  d   RMRpVP                  ^ ,          R8X  d   RMRpVP                  R	V R
\        VP                  4       R2R7       . pRVP                  9   d%   VP                  RVP                  RVR7      34       RVP                  9   d%   VP                  RVP                  RVR7      34       VP                  V4       VP                  RR7       VP                  4        EKN  	  EK}  	  R# )Tr  z/* Integer value ranges */Fr   rU   _signedULLLLz,static const struct netlink_range_validationr   z_range =r   r  rl  r  rw   N)rI   r  rJ   r:   r/   r   r.   r   r   r4   r   r[   rG  r   r   )	r@   r   r   r   r8   r7   signrX   r   s	   &&       r   print_kernel_policy_rangesr  
  sR   E''--/~~'GA<<<4;;.121,2)D"iilc1UtFNN"NtfTUV]^b^l^lVmUnnv wNxG#t'9'9%'9'OPQ#t'9'9%'9'OPQ  )LLcL"EEG) (	 0r   c                 s4   R pV P                   P                  4        EF  w  r4VP                  '       d   K  VP                  4        EF  w  r5VP                  '       g   K  VP                  '       g   K.  RVP
                  9  d   KA  V'       d   VP                  R4       RpVP                  ^ ,          R8X  d   RMRpVP                  ^ ,          R8X  d   RMRpVP                  R	\        VP                  4       R
2RR.4       VP                  4        VP                  RVR,           R2R7       V P                  VR,          ,          pR p	VP                  P                  4        F>  p
V	'       d   Rp	MVP                  R4       VP                  RV
P                   R24       K@  	  VP                  R4       VP                  4        VP                  R4       VP                  R4       VP                  4        VP!                  4        EK  	  EK  	  R# )Tr  z'/* Sparse enums validation callbacks */Fr   rU   r  r  r  z
static intZ	_validatezconst struct nlattr *attrzstruct netlink_ext_ack *extackzswitch (nla_get_r.   z(attr))r   r   zfallthrough;zcase r3  rz  z8NL_SET_ERR_MSG_ATTR(extack, attr, "invalid enum value");zreturn -EINVAL;N)rI   r  rJ   r:   r4   r/   r   r.   r?  r   r   rA   r  r  rC   r   r   )r@   r   r   r   r8   r7   r  rX   r   Zfirst_entryr  s   &&         r   )print_kernel_policy_sparse_enum_validatesr  
  s   E''--/~~'GA<<<>>>t{{*>?1,2)D"iilc1UtF|0G/H	-R ;=]^`NNNN"24<. HNI==f.DK,,."'KDD(uU\\N!,- / DDLLNDDKLDD"#LLNEEG? (	 0r   c                 sd   \        V 4      '       * pV'       d
   V'       Ed   VP                  R V P                   R24       RRRRRR/pW@P                  ,          pV'       g   RpMlV P                  R8X  dG   ^ pV P                  P                  4        F%  pR	V9   d
   V^,          pR
V9   g   K  V^,          pK'  	  M\        V P                  4      pV'       g   RMRpV RV RV P                   RV R2p	V'       d   VP                  RV	 R24       MVP                  V	R,           R7       V'       g   R# VP                  4        V P                  R,          R	,          R,           F#  p
VP                  R\        V
4      . R"ORR7       K%  	  V P                  R,          R	,          R,           F#  p
VP                  R\        V
4      . R"ORR7       K%  	  V P                  R,          R
,          R,           F"  p
VP                  R\        V
4      R.RR7       K$  	  V P                  R,          R
,          R,           F"  p
VP                  R\        V
4      R.RR7       K$  	  VP                  4        V P                  P                  4        F  w  rVP                  '       d   K  R	V9   d3   \        V P                   RV R 24      p
VP                  RV
RR.RR7       R
V9   g   K[  \        V P                   RV R!24      p
VP                  RV
RR.RR7       K  	  VP                  4        R# )#z/* Ops table for r   r  Zgenl_small_opsper-opZgenl_opsr  Zgenl_split_opsrU   r  r  zstatic constrY   z struct r   z_nl_ops[rs  r  rw   z =r   Nr  r.  r   struct sk_buff *skbstruct genl_info *inforl  r  r;  zstruct netlink_callback *cb-nl-z-doitz-dumpit)z const struct genl_split_ops *opsr  r  )r  r   r>   r  r  r  r0   rC   r   r   r  r?  r   r  r  )r@   r   rT  ZexportedZpol_to_structZstruct_typer  rn   Zqualr   r   r  s   &&&         r   print_kernel_op_table_fwdr    s   /77H
 !2!2 3378!#3!: "24 $$8$89C!!W,Cjj'')2:1HCR<1HC	 * fjj/C%-~7x}Afmm_HSEKDD74&"#NNtN,EEGU#D)&11
5'$-MUX 	 	Z 2 V$T*622
674=MUX 	 	Z 3 U#F+F33
5'$-9:3 	 	H 4 V$V,V44
5'$-9:3 	 	H 5 EEGzz'');;;2:f//0WIUCDDud 57OPY\  ^ R<f//0WIWEFDud 57TU^a  c * EEGr   c                 s     \        WR R7       R# )Tr  N)r  rm  rq   r   print_kernel_op_table_hdrr  O  s    fD9r   c                 s   \        WR R7       V P                  R8X  g   V P                  R8X  Ed   V P                  P                  4        EF  w  r#VP                  '       d   K  VP                  VP                  RR4      4       VP                  4        RVP                  3.pRV9   dJ   TP                  RR	P                  VR,           Uu. uF  p\        R
V,           4      NK  	  up4      34       R% FC  pWc9   g   K  \        V P                   RV RV R24      pVP                  VR,           V34       KE  	  V P                  R8X  d   \        WR,          VR,          R,          R,          R7      p\        V P                   RV R24      pVP                  RV34       VP                  RVP                  P                  34       RV9   dJ   TP                  RR	P                  VR,           Uu. uF  p\        RV,           4      NK  	  up4      34       VP!                  V4       VP#                  RR7       EK  	  EM=V P                  R8X  Ed,   RRRRR/RRR RR!//p	V P                  P                  4        EF  w  r#R% EF  pVP                  '       g   Wc9  d   K  VP                  VP                  RR4      4       VP                  4        RVP                  3.pRV9   d   . p
VR,           F4  pVR8X  d
   VR&9   d   K  VR8X  d
   VR"8X  d   K#  V
P                  V4       K6  	  V
'       dC   TP                  RR	P                  V
 Uu. uF  p\        R
V,           4      NK  	  up4      34       \        V P                   RV RV R24      pRW6,          9   d7   VP                  W,          R,          \        W6,          R,          4      34       VP                  VR,           V34       RW6,          9   d7   VP                  W,          R,          \        W6,          R,          4      34       RW6,          9   d   \        WR,          W6,          R,          R,          R7      pVP$                  '       d    \        V P                   RV RV R24      pM\        V P                   RV R24      pVP                  RV34       VP                  RVP                  P                  34       RV9   d
   VR,          M. R#V,           .,           pTP                  RR	P                  V Uu. uF  p\        RV,           4      NK  	  up4      34       VP!                  V4       VP#                  RR7       EK  	  EK  	  VP                  R4       VP#                  R$R7       VP'                  4        R# u upi u upi u upi u upi )'Fr  r  r  r  NZcmdzdont-validateZvalidatez | zgenl-dont-validate-r  r  r  r   Zitr  r:   r  r  z
-nl-policyr   Zmaxattrr   zgenl-r   r   r  r  Zpre_doitr  Z	post_doitZstartZdoneZstrictzcmd-cap-rw   r  )r  zdump-strict)r  r  r  r  r  rI  r9   r   r4   r   r   r   r   r>   r  r  rG  r   r  r   )r@   r   r  rn   r   r   r  r   r3  Zcb_namesZdont_validater   s   &&          r   print_kernel_op_tabler  S  s*   fE:x'6+?+?8+K!::++-KG{{{NN266-67NNr||,-G"$
 %

575H,J5H -44IA4M,N5H,J !K L O *="f&7&7%8WIQwir#RSDNNGdND#9: * ##x/?(;*,T(9*=l*KM &"3"3!4AgYjIJ$/0	6+>+>+H+HIJ"}SUV]S^4_S^aWWq[5IS^4_)`ab  )LLcL"3 .4 
			(UJDUGVV<> "::++-KG);;;'"3rvvmT:; !2<<01"b($&M00"d?q4K/K$"f,h$%,,Q/ 1 %
(-

=J4L=J 5<<QTU<U4V=J4L )M(N Q &"3"3!4D	7)2NOBK'NNH$5e$<gbkRWFX>Y#Z[$56R[(NNH$5f$=wr{SYGZ?[#\]+#F,?.0k).D\.RTF ~~~&&*;*;)<AgYayPZ'[\&&*;*;)<AgYj'QRNNHd#34NNIv/B/B/L/L#MN(/2G2*wBVAWWSX4YSXaWWq[5ISX4Y)Z[\$$W-#&O * .R NN4LLcLEEGC,J 5`44L& 5Zs   V96V>W0Wc                 s:   V P                   R ,          '       g   R# VP                  R4       V P                   R ,           F6  p\        V P                   RVR,           R24      pVP	                  V4       K8  	  VP                  R4       VP                  4        R# )r.  Nr   -nlgrp-r   r   rw   )r  r   r   r>   r   r   r   )r@   r   grpgrp_idr   r   print_kernel_mcgrp_hdrr    sz    ==  NN6}}V$$F--.gc&k]!DE
V % LLEEGr   c                 s   V P                   R ,          '       g   R# VP                  RV P                  ,           R,           4       V P                   R ,           FS  pVR,          p\        V P                   RV 24      pVP                  RV,           R,           V,           R,           4       KU  	  VP                  R	4       VP                  4        R# )
r.  Nz)static const struct genl_multicast_group z_nl_mcgrps[] =r   r  r   z] = { "z", },rw   )r  r   rC   r   r>   r   r   r   )r@   r   r  r   r  r   r   print_kernel_mcgrp_srcr    s    ==  NN>NQaab}}V$$6{F--.gdV<=
S6\I%,w67 % LLEEGr   c                 s   \        V 4      '       g   R # VP                  RV P                   R24       VP                  4        RV P                  9   dy   VP                  RV P                   RV P                  R,           R24       VP                  RV P                   RV P                  R,           R24       VP                  4        R # R # )Nzextern struct genl_family z_nl_family;	sock-privzvoid z_nl_sock_priv_init(z *priv);z_nl_sock_priv_destroy()r  r   rC   r   kernel_familyrm  rq   r   print_kernel_family_struct_hdrr    s    '//DD%fmm_K	@AEEGf***
uV]]O#6v7K7KK7X6YYabc
uV]]O#9&:N:N{:[9\\def
 +r   c                 s   \        V 4      '       g   R # RV P                  9   d   VP                  RRV P                   R2V P                   R2.R.4       VP	                  4        VP                  RRV P                   R2V P                   R2.R.4       VP	                  4        VP                  R	V P                   R
24       VP                  RV P                  ,           R,           4       VP                  RV P                  ,           R,           4       VP                  R4       VP                  R4       VP                  R4       V P                  R8X  d@   VP                  RV P                   R24       VP                  RV P                   R24       MOV P                  R8X  d?   VP                  RV P                   R24       VP                  RV P                   R24       V P                  R,          '       d?   VP                  RV P                   R24       VP                  RV P                   R24       RV P                  9   de   VP                  RV P                  R,           R24       VP                  R V P                   R!24       VP                  R"V P                   R#24       VP                  R$4       R # )%Nr  zstatic voidrv   Z_nl_sock_priv_initz_nl_sock_priv_init(priv);z
void *privZ_nl_sock_priv_destroyz_nl_sock_priv_destroy(priv);zstruct genl_family z_nl_family __ro_after_init =z	.name		= r   z.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),r  z.split_ops	= z.n_split_ops	= ARRAY_SIZE(r.  z.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,rw   )r  r  r   rC   r   r   r>   r   r  r  r  r  r   rm  rq   r   print_kernel_family_struct_srcr    sM   '//f***
mr&--8J%K --(ABC#n	& 	
mr&--8M%N --(DEF#n	& 	NN():):(;;WXYDD	'#	-.DD&..	(3	./DD	DD	!"DD	$%x'
z&--12
&v}}oY?@				(
~fmm_H56
*6==/CD}}V
}V]]O;78
'lCDf***
)&*>*>{*K)LBOP
$V]]O3FGH
&v}}o5KLMLLr   c                 s   R pWB9   d(   W$,          '       d   R\        W$,          4      ,           pM>V'       d7   W29   d1   RV P                  ,           R,           \        W#,          4      ,           pVP                  VR7       R# )r   r  r   r   N)r   rC   r   )r@   r   rv  Zckeyr4   Z
start_linerj  r   uapi_enum_startr    sZ    J>> 73>#::J	$+v}},s2WSY5GG
NN
N#r   c                 s&   \        V P                  R V P                   R24      4      p\        V P                  RRV P                   R24      4      pRV R2p\        WV R,          R4       ^ pV P                  P                  4        Fu  pV'       d   RV9   g   R	V9   d   K  R
p	VP                  V8w  d   RVP                   R
2p	VP                  pVP                  VP                  V	,           4       V^,          pKw  	  VP                  4        TP                  YR'       d   RMR
,           4       V'       g   VP                  V RV 24       VP                  RR7       V'       d   VP                  RV RV 24       VP                  4        R# )zcmd-max-nameZMAXzcmd-cnt-namerv   r=   - 1)r  r  r  r  r   r  rU   rw   r   rA  r   N)r   r9   r   r  r  r  r   r   r4   r   r   )
r@   r   max_by_defineseparate_ntfr  r  	max_valuevalrn   rX   r   r   render_uapi_unifiedr    sM   vzz.V5E5E4Fc2JKLHvzz.Bv7G7G6H2LMNHH:U#IF| 4kB
Ckk  "X^w"}88s?288*A&F((C
R\\F"#q # EEGDD=Rc	23
zYK()LLcL
xz9+./EEGr   c                 s   V P                    R 2pRV P                    R2pRV R2pVP                  RR7       VP                  \        V P                   R24      4       ^ pV P
                  P                  4        F  pRV9   g   K  R	V9  g   K  R
pVP                  '       d.   VP                  V8w  d   RVP                   R
2pVP                  pVP                  VP                  V,           4       V^,          pK  	  VP                  4        TP                  YB'       d   RMR
,           4       V'       g   VP                  V RV 24       VP                  RR7       V'       d   VP                  RV RV 24       VP                  4        V P                    R2pRV P                    R2pRV R2pVP                  RR7       VP                  \        V P                   R24      4       ^ pV P
                  P                  4        F  pRV9   d   RVR,          9   g   RV9   g
   R	V9   g   K(  VP                  p	R	V9  d   RV9  d   V	 R2p	R
pVP                  '       d.   VP                  V8w  d   RVP                   R
2pVP                  pVP                  W,           4       V^,          pK  	  VP                  4        TP                  YB'       d   RMR
,           4       V'       g   VP                  V RV 24       VP                  RR7       V'       d   VP                  RV RV 24       VP                  4        R# )ZUSER_MAXrv   ZUSER_CNTr=  r  r   r   z_MSG_USER_NONE = 0,r  r  r   r  rU   rw   rA  r   Z
KERNEL_MAXZ
KERNEL_CNTz_MSG_KERNEL_NONE = 0,r;   r  Z_REPLYN)r   r   r   r   r   r  r  r   r4   r   r   )
r@   r   r  r  r  r  r  rn   rX   r4   r  r   render_uapi_directionalr    s   ""#8,HF$$%X.HH:U#INNNDDFKK= 34	56
Ckk  "2:'+FxxxBHHOrxxj*hhDD&'1HC # EEGDD=Rc	23
zYK()LLcL
xz9+./EEG""#:.HF$$%Z0HH:U#INNNDDFKK= 56	78
Ckk  "BJ7bh.8r>WPR]Ib XR%7(k0	FxxxBHHOrxxj*hhDD#$1HC # EEGDD=Rc	23
zYK()LLcL
xz9+./EEGr   c                 s   R \        V P                  4       R2pVP                  RR4      pVP                  RV,           4       VP                  RV,           4       VP	                  4        V P
                  V R,          3V P                  V P                  R^4      3.pVP                  V4       VP	                  4        . pV R,           EF  pVP                  R	4      '       d   K  VR
,          R8w  d$   VP                  V4       . pVP	                  4        VR
,          R8X  g   VR
,          R8X  Ed.   V P                  VR,          ,          pVP                  '       d   K  VP                  4       '       Ed   VP                  4       '       dN   VP                  R4       RpRV9   d   RVR,          ,           pVP                  VP                  V,           4       M+VP                  R4       VP                  VR,          RR7       VP                  P!                  4        FT  pVP                  4       '       g   K  RVP"                  ,           R,           VR,          ,           pVP                  V4       KV  	  VP                  R4       \%        WVR4       VP                  RV P&                   RVR,           R24      pVP                  P!                  4        FS  pRp	VP(                  '       d   RVP+                  4        2V	,           p	VP                  VP"                  V	,           4       KU  	  VP                  RR4      '       d   VP	                  4        VP                  R4       VR
,          R8X  d?   \        VR,           4      p
RVP-                  4        R2pVP                  W,           4       MVP.                  p\        VR,           4      p
V'       g   R V,           R,           pVP                  \        V4      R,           4       VP                  V
R!,           \        V4      ,           R",           4       VP1                  R#R$7       VP	                  4        EK  VR
,          R8X  g   EK  VP3                  \        V P                  R%V P&                   RVR,           24      4      VR&,          .4       EK  	  V'       d"   VP                  V4       VP	                  4        V P                  R'R4      pV P4                  P7                  4        EF|  w  rVP8                  '       d   K  R(VP:                   R"2p^ p\%        WVP<                  R)4       VP7                  4        F`  w  ppRp	VP>                  V8w  d   RVP>                   R2p	VP>                  pV^,          pVP                  VP                  V	,           4       Kb  	  VP7                  4       '       d   VP	                  4        TP                  VP:                  V'       d   RMR,           4       V'       g!   VP                  VP@                   RV 24       VP1                  R#R$7       V'       d"   VP                  RVP@                   R*V 24       VP	                  4        EK  	  R+V R,,          9   pV PB                  R-8X  d   \E        WVV4       M6V PB                  R.8X  d   \G        WV4       M\I        R/V PB                   24      hV'       d   \%        WV R,,          R0R17       V PJ                  P!                  4        FS  pV'       d   R2V9   g
   R3V9   g   K  Rp	R&V9   d   RVR&,           R2p	VP                  VP                  V	,           4       KU  	  VP1                  R#R$7       VP	                  4        . pV PL                  R4,           FH  pVR,          pVP3                  \        VP                  R%V P&                   R5V 24      4      V .4       KJ  	  VP	                  4        V'       d"   VP                  V4       VP	                  4        VP                  R6V R24       R7# )8Z_UAPI_LINUX_Z_HZ/r   #ifndef rA  r   Zversionr  rV   r.   rY   r   r   z/**rU   r7   - r<  F)r8  Z@z: r   r]   r   r   r  z
render-maxz/* private: */r  r  rv   z = (r  rw   r   zc-define-namer   zmax-by-definer=  r  r   r  r  ZunifiedZdirectionalzUnsupported message enum-model z
async-enum)r4   r  r  r.  z-mcgrp-rH  N)'r   r  r   r   r   r  r  r9   rE  rA   rV   Zhas_docZhas_entry_docr:  r4   r  r  rC   r  r>   r  Z
user_valuer  r  r   r   rI   r  rJ   r  r  r   r  Zmsg_id_modelr  r  r_   r  r  )r@   r   hdr_protrC  rY   r   r7  r  Zname_pfxrX   r  r  r  r  r   r8   r  r  r7   r  rn   r  r   s   &&                     r   render_uapir  H  s   gf&=&=>?rBHS)HDDh	DDh	EEGv/

9a 89;GgEEGG&&99X=G#g&GEEG =F"eFmw&>==v/D{{{||~~%%''DDKC}#d5k1%%dnns&:;DDJ%%d5k%%@!\\002E}}!ELL047%,F))#. 3 UFv6yy63D3D2EQuV}oUV0WXH,,.%%%"5#3#3#5"67&@FU\\F*+	 / yyu--%&=G+&x&'89H #DMMO#4A6GDD+,#11H&x%'78H##'(?U#:DD*S01DDF*WX->>HILLcL"EEG6]g%NNGFJJ282C2C1DAeFm_/U%W X!'N, -s 'z 
'"
JJ6M''--/))*%0	HMM;?~~'GAtFzzS tzzl!,jj1HCDD&() ( >>EEG
X"3?@DDH%%&c)56
#DD8H--.a	{;<
/ 04 "VL%99Li'F|D				-M:9&:M:M9NOPPF<$8LQ++$$&BX^w"}F"}r'{m1-DD&' ' 	#
 G}}V$$6{F<M<M;NgVZU[9\ ]^&# 	$ % EEG
'"
DD:hZs	#$r   c           	      s   V P                   P                  4       '       g,   V P                  P                  R VP                   R2R7       MQV P                   P
                  VP                  ,          pV P                  P                  R VP                   R2R7       V P                  P                  R\        V R4       R24       V P                  P                  R\        V RRR	7       R
24       V P                  P                  RV P                  R,          P                   R24       V P                  P                  R\        V R4       R24       V P                  P                  RR7       R# )r   r   r   z.alloc_sz	= sizeof(r  r  z.cb		= r;   Tr   z_parse,z.policy		= &r]  z.free		= (void *)r  z_free,r   N)r@   r   r   r   r4   Zreq_by_valuer  r   r   r   r3  r  r   )rp   rn   Zcrud_opr   r   _render_user_ntf_entryr    s   99!!
2<<.56))((6
7#4#4"5T:;EEGG"9R#9":"=>EEGGi	"gT:;7CDEEGGnRYYw/;;<FCDEEGG!)B"9!:&ABEEOOOr   c                 s   R V P                    R2pV'       d   VP                  RV R24       R# V P                  '       Ed   VP                  RV P                    R2R7       V P                  P	                  4        Fh  w  rERV9   d*   V P
                  VR,          ,          p\        WR	VR4      pM(R
V9   d   \        WR	VR
4      pM\        RV,           4      h\        Wu4       Kj  	  V P
                  P	                  4        F'  w  rR
V9  d   K  \        WR	VR
4      p\        Wv4       K)  	  VP                  RR7       VP                  4        VP                  V R24       VP                  RV P                    R24       V P                  4       '       d6   VP                  R4       VP                  RV P                  R4       R24       V P                  4       '       d<   V P                  '       d)   VP                  R\        V P                  4       R24       MLV P                  '       d*   VP                  R\        V P                  4       R24       MVP                  R4       V P                  '       d?   VP                  RV P                    R24       VP                  RV P                    R24       VP                  RR7       R# )zconst struct ynl_family ynl_Z_familyr  rw   Nz!static const struct ynl_ntf_info z_ntf_info[] = r   r  ru   r  zInvalid notification r  z
.name		= "rr  z.is_classic	= true,z.classic_id	= Zprotonumr   z.hdr_len	= sizeof(struct r  z5.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),)rC   r   ntfsr   r  r  r  r_   r  r   r   r   r9   r  r   )	r@   r   Z	prototypeZsymbolZntf_op_nameZntf_oprn   rp   r  s	   &&&      r   render_user_familyr    sK   +FMM?'BF
wvha !{{{
?n]^#);;#4#4#6K6!ZZx 01FBAF"FFGD 7+ EFF"2. $7 "::++-KGb BG<B"2*	 .
 	#
NNfXS>"DD<b	)*
#%
vzz*56a89DD-gf6I6I.J-K2NO				
EgfNaNaFbEccefg
56{{{
}V]]O:67
0{KLLLcLr   c                 s    V P                   P                  4        FG  w  rVP                  '       d   K  VP                  4        F  w  rVP                  R 8X  g   K    R# 	  KI  	  R# )r  TF)rI   r  rJ   r.   )r@   r   r8   r7   r  r   family_contains_bitfield32r    sS    ''--/~~'GAyyL( ( 0 r   c                 sZ   R p \         P                  P                  \         P                  P                  V 4      V4      p\         P                  P	                  V 4      p \         P                  P                  V R4      p\         P                  P                  V4      '       g   K  WRR 3# )rU   ZMAINTAINERSNr   )r!  r+  r   basenameZdirnameZexists)Z	full_pathZsub_pathZmaintainersr   r   find_kernel_rootr    su    H
77<< 0 0 ;XFGGOOI.	ggll9m<77>>+&&sm++r   c            	      s'   \         P                  ! R R7      p V P                  RR\        RRaR7       V P                  R	R
\        RR7       V P                  RRRRR7       V P                  RRRR7       V P                  RR. R7       V P                  RRRRR7       V P                  RR. R7       V P                  RR\        RR7       V P	                  4       pVP
                  f   V P                  R 4       VP                   Uu. uF  p\        P                  ! V4      NK  	  pp \        VP                  V4      pVP                  R!8w  dA   \        R"VP                  4       \        R#4       \        P                  P!                  ^4       \'        \)        4       TP*                  TP,                  '       * R$7      p\/        TP                  4      w  rxTP0                  R8X  g   TP
                  '       d!   TP3                  R%TP                   R&24       MTP3                  R'TP                   24       TP3                  R(4       TP3                  R)T R&24       TP3                  R*TP0                   R+TP
                  '       d   RMR, R&24       TP                  '       g   TP4                  '       dl   R-p	T	R.P7                  R-.TP4                  ,           4      ,          p	T	R/P7                  R-.TP                  ,           4      ,          p	TP3                  R0T	 R&24       TP9                  4        TP0                  R8X  d   \;        YF4       R# R1TP<                  P?                  4        R22p
TP
                  '       dA   TP3                  R3T
,           4       TP3                  R4T
,           4       TP9                  4        TP*                  '       d5   \        P@                  PC                  TP*                  RRb 4      R5,           pMR6pTP0                  R8X  d   TP3                  R74       TP3                  R84       TP9                  4        TP
                  '       g8   TP*                  '       d   TP3                  R9T R:24       TP9                  4        R;TPD                  ,           .pYPF                  PI                  R<. 4      ,          pMTP3                  R=4       TP3                  R>4       TP
                  '       d5   TP3                  R?4       \K        T4      '       d   TP3                  R@4       M&TP3                  R9T R:24       TP3                  RA4       . pTRB,          TRC,          ,            F$  pRT9   g   K  TPM                  TR,          4       K&  	  TP0                  R8X  d   TPM                  TPD                  4       . pT F1  pY9  g   K  TP3                  RDT RE24       TPM                  T4       K3  	  TP9                  4        TP0                  R8X  d   TP
                  '       gK   TP3                  RF4       TP9                  4        TP4                   F  pTP3                  R9T R:24       K  	  M-TP3                  RG4       TP9                  4        \O        YFR4       TP9                  4        TP0                  R8X  Ed   TP
                  '       Ed   \Q        TPR                  PU                  4       4       F+  w  ppTPV                  '       g   K  TP3                  RH4        M	  \Q        TPR                  PU                  4       4       F&  w  ppTPV                  '       g   K  \Y        TT4       K(  	  TP9                  4        TPZ                  RI8X  d]   TP3                  RJTP\                   R&24       \_        YDP`                  TPb                  RK7      p\Y        TT4       TP9                  4        TPZ                  Rc9   d~   TPd                  PU                  4        F_  w  ppRLT9   g   K  RMT9  g   K  \g        YdTP0                  TRL4      p\Y        TTPh                  RN,          TRO7       TP9                  4        Ka  	  \k        YF4       \m        YF4       \o        YF4       EM\q        YF4       \s        YF4       \Q        TPR                  PU                  4       4       F+  w  ppTPV                  '       g   K  TP3                  RH4        M	  \Q        TPR                  PU                  4       4       F&  w  ppTPV                  '       g   K  \u        TT4       K(  	  TP9                  4        TPZ                  RI8X  d]   TP3                  RJTP\                   R&24       \_        YDP`                  TPb                  RK7      p\u        TT4       TP9                  4        TPd                  PU                  4        F  w  ppTPZ                  Rc9   g   K  Rd F  pTT9   g   K  RNTT,          9   g   K  TP3                  RQTPv                   RRT R&24       \g        YdTP0                  TT4      p\u        TTPh                  RN,          TRO7       TP9                  4        K  	  K  	  \y        YF4       \{        YF4       \}        YF4       TP0                  R8X  Ed   TP
                  '       Ed   TP3                  RS4       \        YF4       TP                  PU                  4        F*  w  pp\        T\        4      '       g   K  \        YFT4       K,  	  TP9                  4        TP3                  RH4       TPR                  PU                  4        F+  w  pp\g        YdTP0                  R-R-T4      p\        TT4       K-  	  TPd                  PU                  4        EF  w  ppTP3                  RTTPv                   RU24       RLT9   d   RMT9  d   TP3                  RQTPv                   RV24       \g        YdTP0                  TRL4      p\        T4       \        T4       TP9                  4        \        T4       \        T4       TP9                  4        \        T4       TP9                  4        RPT9   d   TP3                  RQTPv                   RW24       \g        YdTP0                  TRP4      p\        T4       \        T4       TP                  '       d   TP                  '       d   \        T4       \        T4       \        T4       TP9                  4        TP                  '       g   EK  TP3                  RQTPv                   RX24       \g        YdTP0                  TRY4      pTP                  '       g   \        RZTP\                   R[24      h\        T4       EK   	  TP                  PU                  4        Fl  w  ppRMT9   g   K  \g        YdTP0                  TRM4      pTP3                  RQTPv                   R\24       \        T4       TP9                  4        \        T4       Kn  	  TP9                  4        EMTP3                  RS4       \        YF4       TP                  PU                  4        F*  w  pp\        T\        4      '       g   K  \        YFT4       K,  	  TP9                  4        R]pTP3                  R^4       TPR                  P                  4        F%  pTP                  '       g   K  \        TT4       RpK'  	  T'       d   TP9                  4        TPR                  P                  4        F  p\        TT4       K  	  TP                   F  p\_        TT4      p\        TT4       K  	  TP3                  RH4       T'       d   TPR                  PU                  4        Fh  w  pp\g        YdTP0                  R-R-T4      p\        T4       TPV                  '       d   \        TT4       TP                  '       g   K\  \        TT4       Kj  	  TP9                  4        TPR                  PU                  4        Fi  w  pp\g        YdTP0                  R-R-T4      p\        TT4       TPV                  '       d   \        TT4       TP                  '       g   K]  \        TT4       Kk  	  TPd                  PU                  4        EF  w  ppTP3                  RTTPv                   RU24       RLT9   d{   RMT9  dt   TP3                  RQTPv                   RV24       \g        YdTP0                  TRL4      p\        T4       \        T4       \        T4       \        T4       TP9                  4        RPT9   d   TP3                  RQTPv                   RW24       \g        YdTP0                  TRP4      pTP                  '       d   TP                  '       d   \        TRR_7       \        T4       \        T4       \        T4       TP9                  4        TP                  '       g   EK\  TP3                  RQTPv                   RX24       \g        YdTP0                  TRY4      pTP                  '       g   \        RZTP\                   R[24      h\        T4       EK  	  TP                  PU                  4        Ft  w  ppRMT9   g   K  TP3                  RQTPv                   R\24       \g        YdTP0                  TRL4      p\        T4       \g        YdTP0                  TRM4      p\        T4       Kv  	  TP9                  4        \O        YFR]4       TP
                  '       d   TP3                  R`T
 R&24       R# R# u upi   \"        P$                   d6   p\        T4       \        P                  P!                  ^4        Rp?R# Rp?ii ; i)ez Netlink simple parsing generator)Zdescriptionz--moder  Tru   kerneluapi)destr.   requiredZchoicesz--specr   )r  r.   r  z--headerrV   Z
store_trueN)r  actionrR   z--sourceZstore_false)r  r  z--user-headerZ+)ZnargsrR   z	--cmp-outzJDo not overwrite the output file if the new output is identical to the old)r  rR   Zhelpz--exclude-opr   )r  rR   z-or'  )r  r.   rR   z --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(  z/* SPDX-License-Identifier: r   z// SPDX-License-Identifier: z0/* Do not edit directly, auto-generated from: */z/*	z/* YNL-GEN r   ZsourcerU   z --user-header z --exclude-op z
/* YNL-ARGZ_LINUX_Z_GEN_Hr  rA  r  zgenerated_header_file.hz#include <net/netlink.h>z#include <net/genetlink.h>z
#include "rB  zuapi/headersz#include <stdlib.h>z#include <string.h>z#include <linux/types.h>z#include <linux/netlink.h>z#include "ynl.h"r  zattribute-setsz
#include <Z>z#include <linux/genetlink.h>zstruct ynl_sock;z/* Common nested types */r  z/* Global operation policy for r  r  r  r:   rW  r  z/* r  z/* Enums */z/* ============== z ============== */z - do */z
 - dump */z - notify */r  z4Only notifications with consistent types supported (r   z - event */Fz/* Policies */r   rH  )ru   r  r  r  >   r  r  r  )fargparseZArgumentParserZadd_argumentrW   Z
parse_argsrV   ZerrorZ
exclude_opreZcompiler  r   ZlicenseZprintr!  r"  Zexitr  Z	YAMLErrorr  r   r'  Zcmp_outr  r  r   Zuser_headerr   r   r  rC   r   r+  r  r  r  r9   r  r   r  r  rC  r  r:   r  r  r   r  r  r  r  r  r3  r  r  r  r  r  r  r4   r  r  r  rn  rA   rP   r  rt  r  r  r  r  r  rX  r  r  r  r[  r  r_   r  rs  ru  r  rD  rd  re  r  r  rx  r;   r  r  r{  r  r  r  r  r  r  r  r  )Zparserr   Zexprr  ZparsedZexcr   r   Zspec_kernelr   r  Zhdr_filer  Z
definitionZseen_headerr   r3  r8   r  rn   rp   r  r   rY   Zhas_recursive_nestss                            r   mainr  "  s4   $$1STF
vC$ :  <
vC$G

,PTU

-H
sB?
L$i  k
xD
:CFD{{7804@2::d#K@			;/>>RR/6>>2XYFFKKN 
IKt||;K	MB%dii0NAyyFdkkk
+FNN+;3?@
+FNN+;<=DD	;<DD4}C	 !DD;tyykt{{{8"I	MN$***!&&td.>.>'>?? %%rdT__&<==
z$s#$EEGyyFF,,./v6H{{{
Z("#
Z("#
}}}77##DMM#2$67$>,yyH
'(
)*
{{{}}}z(1-.EEGV///0''++Ir::
"#
"#;;;DD+,)&1112DD:hZq)*DD#$]+f5E.FFF
z!NN:h/0 G yyFv))*K!DD:cU!$%s#  EEGyyF{{{DD/0EEG''z#a() ( DD#$EEGv40
yyH;;;#F$>$>$D$D$FG	6>>>DD45 H %+6+E+E+K+K+M$N &>>>(V4 %O EEG##x/6v{{m3GH(@(@FL`L`a$R0##'::#)::#3#3#5KGRrzgR&7'DIIr4H,R91E"M	 $6 &f1"6.*66&v25fA#F$>$>$D$D$FG	6>>>DD45 H %+6+E+E+K+K+M$N &>>>$R0 %O EEG##x/6v{{m3GH(@(@FL`L`a V,%zz//1''+>>#1"b=Y"W+-EDD3r||nCy!DE!+B		2w!OB,R91E"MEEG $2  2 "&-"6.*66yyF;;;DDF'%}}224eeW--'E:  5 EEGDD,-$*$>$>$D$D$F &DIIr2xHF+ %G  &zz//1)",,7IJK2:'"3DD3r||nH56#B		2tDB"2&*2.EEG"2&*2.EEG'+EEGR<DD3r||nJ78#B		2vFB"2&*2.---&r*&r*(,EEG:::DD3r||nL9:#B		2xHB---'*^_a_f_f^ggh(ijj&r*?  2B  &{{002b=#B		2wGBDD3r||nK89"2&EEG&r*  3 EEGDD#%}}224eeW--#F6  5 EEG"'DD!" 44;;=###!"f-*.' > # 44;;="f% >((-"f% ) DD,-"(.(B(B(H(H(J$Hf#B		2r8LB-b1~~~0V<|||22v> )K $*$>$>$D$D$F &DIIr2xHF+>>>"2v.<<<$R0 %G  &zz//1)",,7IJK2:'"3DD3r||nH56#B		2tDB"2&"2&!"%bMEEGR<DD3r||nJ78#B		2vFB---%b5"2&(,rNEEG:::DD3r||nL9:#B		2xHB---'*^_a_f_f^ggh(ijj'+5  28  &{{002b=DD3r||nK89#B		2tDB!"%#B		2wGB'+  3 EEGv51{{{
z(3'( C	 A >> c

As'   AN)A'AN! N!AO+N6*AO&O&AO+Z__main__>
   Zs8rd   Zs16re   rf   rg   rh   ri   ZsintZuintrk   rM   rH   )rw   r\  r   rJ  )rU   r  )r  Zcollectionsr,  Zpathlibr!  r  r-  r"  r%  r  r+  r   ZPathZ__file__ra   ZparentZas_posixZlibr   r   r   r   r   r   r   r   r   r   r   r   r-   r   r   r   r  r  r,  r2  r9  r@  rB  rZ  rr  rw  r~  r  r  r  r  r  r  r  r  r  r  rb  rQ  rR  rD   rO  r   r   rV  rX  r[  rc  rd  re  rk  rn  rs  rt  ru  rx  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r$   r    r   r   <module>r     s       	 	  
   X&..077@@B C \ \ 4** 
Ei8 EiP 4d .`. `.Ft "3. 3.l1A 1Ah%z %"<J <DUT U2-!t -!`U2D U2p=2D =2@1 1<+X +@ (I IXC C("k "JCk CL   F! !gCZ gCTB\ B\JC* C*L Q Vv  	"
GfR	 #	
#	
#	 #	 	#	
 #	 #	 #	 #	 	#	 #	 #	 #	 #	 #	 
#	  !#	" 	##	$ %#	& 
'#	( )#	* +#	, -#	. /#	0 1#	2 3#	4 5#	6 7#	8 9#	: ;#	< =#	> ?#	@ A#	B C#	D E#	L)2=D$5#,L*ZG*T
P)'TVr!H)(.HV5p6&c%P5"
&$'4  

%0(`0'S:%P@F:M`	
	"J$63lK%\
(V,s)l	 zF r   