From a7788732e857b3a9eabe0be403d0a6fdf0ec6782 Mon Sep 17 00:00:00 2001 From: busii Date: Tue, 14 Jun 2022 07:29:45 +0000 Subject: [PATCH 1/8] Add new directory --- json-examples/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 json-examples/.gitkeep diff --git a/json-examples/.gitkeep b/json-examples/.gitkeep new file mode 100644 index 0000000..e69de29 -- GitLab From a8e92e72703d91221984072432c1b8859d9fd77c Mon Sep 17 00:00:00 2001 From: busii Date: Tue, 14 Jun 2022 07:33:01 +0000 Subject: [PATCH 2/8] Upload New File --- json-examples/e-line-examples.pptx | Bin 0 -> 39222 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 json-examples/e-line-examples.pptx diff --git a/json-examples/e-line-examples.pptx b/json-examples/e-line-examples.pptx new file mode 100644 index 0000000000000000000000000000000000000000..0c8f28b1ec79ecb513ae806edc4a162c09ac7c2f GIT binary patch literal 39222 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 w(32x(S6wJ<|U;}B2c|&ph)^gZxKkmUT z0%q}t*%!yizpVzic_PODn1JkIB&gD52?@p=(BnoeOToq4LbQWkg$mZ(vA~N~j{)vz z$>iYcLf!u`FFAuW26kOf8|`cfro+MWc8{UV`1&)bo8@Tjv6~Bk=d3?>bfWCPXFYrX zJg@ox@gK6RF~M>!DnZJgR(#bKbsn@_?8u;mphWBX#nE zm<&h36kiMaI9*wve*(Y)uGV4#IKv6QMsou8CODnGlyD(JcqsnD=)TQF$|7d z7DZB%&~=cl=w;0>6odSo0;fYhM>J9kaq8+`zgh&@arJ&T;ohRQ1d>Z{uxvnab6x%hU*m0BbW=TR5wWDDyt35<$zxlizlm5uS}Aq!LtuI^ zv!IFlHwL-L(pRsd{5ECu-jGWOxh3?{FgQMXpD_tvRxt`HA7+swpCG1lva#5}frbu2 zpiWLcE7kqQ<4J+){NHOrVA!#iOun3ckR1jE^CC~Q`AQ$9^?EB3V`tbbtW3Yl0fIaKX)~DM@I9;_%@@nV9$g)e8$sAh> ziH{?wjazgZKtQVL*#S4pT*2Nv)I#TG{26ELn-I)g89ZEQJQ~@;yiVS}eNuZ_ zmT##&BldTF68d@(O@Ffc=F#|)i0zQB{G|3e$)j6Bg%^4bwcfsZ!asuI9lkJ*j`I)?awTdIPT@sLG$#k z4rST7DI3V7VE;)1*S$FSA*fw8CJ-u;!mBKHjLl)$WiQSqnm)!bdxe%7TQ;zLQP#z~ zP22@S+tx8NEn50K`T5BkXo(~1&o&Os>QCp;k2kf!j}c(Sl?hw-;egP`wj5Z=l%-&~ zQ9ASTJh#>D@o_f=s=vUZ6`DU4fLXeVqZ%r~8CT@LJQX)Dt(VfiV=(PJ?26UuiWH!i zM6ySf;>A>m0396I)AaCCd0xhX##6p_S_Usw7uZIjx`E<@V;rq&qr8Fv|FBwS89BZ) z9qfhn@KXD3>AKid)wqbUV?5-&fp86Wz19d5x0>aUioM$=X8F^AckpQwxpV2Sb;AN% zEbxo3ik}7jAE$vo4Zi28XMdytpU*$V1#98FONLXVF4!+=A!XwaX zz3BM`<<;V)-Q6G0#m>UT<8hcBMo_upVAPx~x=yfi!h!hkMr06K}A9h(NhJuu<(~vR}p}s4x z1fh=jjmWYVZD~BU?ZLbbFkrWZ9+7wErQTe>5F&RqyU=Pndbp_318EKE4+2VXv_3|| z#cikb`Yvv=%uVwE?u9lgc<1}KV`*}K;z)U0w6)ZyU28VZVyu>xOBPoyRF`hXCQk33 z8g_VMPF+PsL>}c6=1&*_+8fIiDiN>SJD!VVno=<2XbI4 z%birL>TjlK=bqXwh#p%6vYUlYhx*ZhAY*R{HZ@x#8n}+!R;sJ*FJ~Qb22-dU=MgG< zCRHrlfv@;U+K^HX3RN%y!3Dkm(zi4S1u2cgn|Wl6r2HDhBTTW9qOJm0!|AQBBWf-Nmq4-A;EegC9uLBQ)HL@(2*SW>j}d0hWzxXNwIn9;HK%(#CZp&e zWs47>fGPGDpCe#ROCma)5wSth`i~Fd=C*RDDZ%{1AbH>m>gjtRjYv!3#w-QovLX%* zvjEMQ92n%lsZvNKg$-(Cc0j)xlfb~(SJlC?+D%xN2Emve#R~leRqyb|i)nEG%rK=2 z49s&~;3dKH(thIJv}#p50eulfYC_4l#vcE79pCIph0QGOY`V&mpH18Pn;2JJDA|)yv$R^E zF0{&kc-Mwy0LWtAG<3-tWl@D?18&k(&tx_DsNI@~0kHBj56Xxg3n13ay`L>4zq^$X zd%k;UOV?zN;>l)ZjB1xaImxeRX#G}3eS2!dGtoB*0bPN@`$TZ$Cnzh^E$$Fmke&PU=*N)jD)|>%(}Q2@LqmhU%w!hSBgC}$l#%2 zYt?`lNwnr2k0)>->(O*+caZI>z*Y(;yx!#_mw*bN79 zMgZlrK5+j$XRqQs4({}2e5tS+iCqh2_cedqiaYGXX`QM%zhyeCFkrMruJ7o2WrcbW za_N!30;SC3I<_sY9VwjAQ!-nIIcP81w(1yCK9z_aLX zz$tXH`PRMn^4Hx_QeYo?yf4bs@wJ%qA5o@1U1t@_8&-34NL`}4*cCRJh0mso$_^#s zm;ntlp;mCZ2+ol<7C+kyL8W&aw{0JYusE+dhGN`e)0f$Kcs{zWu#WaG+C2qlqQsQ! zS?>GleS;w=U6tzFOP$>np8hacs0ET68=PW?+-z!fc-<>YAyv{``&u*mp-D;qo?kPe zCgIN+g)yz+*z==P)v*5(HmYxEN{BwdYB4c{{P{7MT8y-tb+YQRtCt+b4?EUb0!~;$ zh>*;Cs#zL;(4?^ur^N{IqqVRGRAJw^trGSqJ0a)me-{sHeS7 z`A1<7(a|th%oUr4ZcM0I$51`SCU!xuda&WS*yn4^dfz2U?Htsx`@YKdYJ}vDw>feHFQMVh0F8I zdLI{%r)@Lr#3|g6d9-%w$vQEIA&QM6DypUgv7o@s00J0}4GSYdL=|mA2;Ocetx9sL z)3AEmL~q?OwTO06%=}A8$p-zVpb&XHOqEPOK46!C<{H7l1vdLx_Bu^Ef?jo1-_Rls zS8U(|KU`wI+zuf|A0~8PZU?$>;~5(kiKBXV=YEQuva=wh`wiu|17-K(B8qQ)XjT?T z*!Dp1FH;h`b@Db=Wjm(YyF52_i*?fDOVmj=eq)hqYl2oUN(RSBYBOyF$9qlBZ&Jwx za9TOte8;GTwU4<+b=0%M86?8zM|vqw;+jZ*^EprrJwNMb1(?36HjUC5`&`bOc|JX# zP4rJ~anF}wYX}tQqNB8IN`9tdtxO3t+qsj1=m_z*Mr=uCF76{7G$fE zMAWs<7dA)eW_Z&pxPc5mm_!l(+1=dA{Ow8d*lhn;zoor9D*UhEmBaukef9Mu9Mi9c z;6H-bpGyiVlq9Xz=-@X{kFh}K6UTkMl9E_IA|JUAIM%9^Yi`onK;2tbU2=49# z2<~nnK(OGhE4V{&4J5b|+}$;}28Uq5-4@?U`s_`b)4Olq@7_Omj8pJ3USQQTN@m%t zsyVSNzCE)Q!KXSb&S(_F(7WoV=e~xho9_lI|D3c{FdHH_4}x=5RdHR!LuEsQe?;4S zBSkn1bsX~R>t2irx1}Quj{wzB)S0|LuNGb(uC63p@@cE-dEcnPku9cx6d>bHo%wqD zsbLlQ{MS_aSs#m~fju8>$NV=pc=LOLr&iZ-@6NhC(VJPc*}kbZs?sXF-V^7bu2Pp* zpFNb*5;LJoE9$!5L0Njk5A2v{hpYYiL^ZE|Rj&g9ITb&8MvE=4)nYC-Q5yvD>4okW zB&}}g@XBsVIVi z@xp4Oo+VfF+$-&k)mHdQh+C#aE>7vZhPZK9a=TAD5#-aTpIdx{(COJ16nx?%Vv#yW zYj7obBohP7nCiqM?+Y;qRPCfFO^Dp`kr9m368IHIdUwZC%n+ML7t&6Gl z=MR{9`%MeimxnjwYaQw2rv-Y0ul-&)k{PvBa5Tb_YQ}fBvGt`6M%q13&W19H?#Y$& zA`l;ClcpNC@hXKaB0)ilILiYmC6gUUly-Y)Itsb zajGXCX( zzb8-LKJNuj+#50e*RAE(owPv>ZL2j7tUJaLe)yf5XNuPNG03-ch(^($hUwl%ZM`Cr zRCzIHScCVvdXm9JZA@C~lva*z{%R}Ik&=Y?cu|yC>h{o9bA8U|3s2@oRYVD$F1fKx zOp!db;cSPmu8WpulfWj{5mkTp#ir_4wp}ht zn37UcF{w*yaZPXTZ{;Se2A8xpxOHaQ@zyw8v}e`)yJKm?Z#8Aa+0t;c)=?11xxX`k zc!mnJ%2ah{XvEDwMHM>-cB*3=NvDHcbas;c%3%0}u2GDL%sg~MgUgI7e;h|+; ztgp{LO3s_HClc5pKA0I0gQ+z)CV^PM=5{ z4~%%*urUc(71IaxRs-22r4C<_GDcOhzi|m?R`FS(+5LyL#4I-X*J$U)(I$O%P}?Qd zfg*5Kb`l25bBiV41Q6eS_KuxLf$FhF(_L>CGQ^)_EOV+2R|UX-gwk*(ECis{!+n|J z0MBYqBMh(sBKLUUSLC0s?T0^K!y*g_TR*d_1WPvePKR!^vs1qPprdp)oNPWd4$7qn>gy`+YY?5sMj z&qt@;9RYQ816s~jV4To5MkKA_<7_-`W!hoC*LOd7*Z0jM%axE7+E*eU;t(zy;f)Kg zh#Fz~)wFk&-({3u>q}4WcP?Byd02lX*KUTdgPaVv?n%G!sN4{hBOTuozl@)yX&-sw zKbqVa?CGI5Ct598vIICk`!pL zmZrp-CBeFjunMs5Vlz<~RVs!2pgq_0q!}AQMJ&fP9&OJ`k8f|X3m92H;R-ncCv9(p z%Wp9!cU!jBfZ2ohY@MKlH3@ID)fNTF7ZK3rvi@vIQ+{5{NUwdXes~IeQsHW&=K{E7 zP|_dDqYb#ID|RI`vyT^k<}18D-(m9_`2#QWH$^PGyWj(S%&)c!E2KYAKOS+~ihF<4 z8w}#Ry`)#{q3ZRtwNWx+&Sd|1RG5gfhY+SYTI#3D78A(SYaS_!qtPfAU}ZEfY{Y&* zX7_G~MuOHaJ>+&JxkA3SUcXmT>6JWDzl5rqK#jc-6nb5ua&F4~Uv`7#BvG{S;BJuS zA9RDiE~Pdm?)}tX1c3Dy{P1&N{l!a9d|5=`PX$KaIMUCvkp-oSm4?>TBlB|%x#~*9 zA>~=!W_%JeB%#r$B*%x8`idSGUJ2QA@#Qoxj-`ooHR{Dr@`7S+kCg5mT9_bp3%U9X zqj9*KCN3(+mh|tg2O8{DvX9tjaS2Nh#Pz~^vzxy+K23UyU2G;^5So!ycWJHqCCtWl zfOse|>UrC+(s(u9*TGlOy9ENg*r&)^-bqUFrPcTn?Kssi89fo$w;x4 zWsvaTe6h+u;f1Ci^`bA+k&J3bbV!D_dHp7~|CmFpK$Kb66RT}fKcgz%3;w-b?i&Qb za$?LlB}m%H@7=lC8m{>1IkD?-WtWp|vKe0q7}*G(>)Z&@$R$z1NfjvzL-Qn9zM>df z<86m`$dxW}SLruOp)g()#GN&JX_a%QEA_0NVNAoJomj-KY}H|Oq9j~E*98~miBf-{ zccf)aX=9)V;rfUEwN~dwo>i<3{b=n0_=b4t=Y56-lnSv`9GvZp#>MJyed*@trG{o> zT%1NWAYLA&#^XK8*wfj|Jnv+uHhsG?MkbkfKm2%$(D* z@C?4tC+bg25Z4+s&ai0Ih?;-wbq~Lp#zAW!E_6{(i7l5X z9vq#rZcYu=wv=m7WtP1@arMTvIe+8fxecVB4*Fe-Tabu^){xi;a0Uyw~rvH3nv+ZKd?4BMDxNrF|qR7 zL3baGFe(&e2lr|{j+D(pq@gXvuQ_b#3GqL(J0kPd^oYOq_eTE|%v!x*yFApbpL~#{ zk<}j)#tP>I;ye+OS9*BO0y?`zR66;{+8K;Hyq;Z!f{a`v_ z`%9#7j?#CW_n{me5kX5~y)3eC3Krg#2aLo`t$`=ixmu#zE;eY>SA&>5QO2^n*_>yv+vE;># zQ2%^!Dn-)iM81a#)m3IPxh4GiV(O8OCwQ&%-!F6g?_YBJwL|k))`tHdzVNs_LwJY} zHYu4v@L(C$!PMB&nDN)oU+2$$Xv&8Ya$>dMUK4eGBZ}O^zt>zvIiHc6`$0w4Alavw z7G)AU85TxyP=eqc{S?W6tnyT8t2l6s4`p4z3mIlPiL<^;fH3MKuFzr$nS`H{AP z#LEVMKL|P-{?%RBL2F42Jo7@nnk#kJ2mK7?*gkj6ekE$7gs#b;HcT^4%E|g&j=~q6 zNl+|_QWc!fF`quONlbBYl3o*i24rco7k)J(Y(;=ifJjI*d5n~P@}9{CS#mmR?d9n@ z+DAk`HBySsf6AEs)>`vzvDE_K1x5;fID%uOWa%CB#=C?M2$a)BhY<(iT4yjG z{srcO(8{tkx1JN1KNlqFq2%A6BQY{tQLssP_9yd z{F6$=-n{VUbN*Ok3kgu%O z9XZ1Bl1vUAj&lT|R#usta{ypExG1y6X?KNbUF2F%y7&WvS~}%}ob>66uR}y3jq}ilm4Jl$A2eAFt_~J7!gK z_^OkTF^onU#f*9l!dNJTydsIoj1(IJ%T}g6pR)9CzkKhGcS=@Wzm66e{!Z(KZbyFD zz&CM)?)k$ZknTus=UcD$5wcl2*dJzOp1r9(qDe(a)WYwG-RkA1#vttTnichgJvkjj)QBJzkxWMj;|L zp@_5y<|Q8*8P@<6#VgIBQRw?8)8|B*I(rDwOG(W0(LxhCk@hU!ukcGt;!d$lHm5GC z`uAH(f1LL(8qU;LPVHWCd~?G_r4Bu8(C>t^iC+-0TWBm@Ik33AFAK2N{)($#r{1MS zv^8MZz!GD{-yzRL2KPp8gjn4;ZD3oB{DlfpcBO|=B2{@E-f(LdasgP;?%^Y5_n|fa zX-E`#Ea)ksjmGx^VrhDIx3q*02B~oEU z;#`rIuzi0Cw-nYPvuXPA-E|#Csxepu`UM#bEdnYgk=<3K2uBlaC11V$5Ltrab0GR| zV^Gl~Y;+R8&9iBpj)b=&Tzfp2t}kPU9BB5A8m&YyOmv@PAxYe)^s^Z2Ad|`?Cf2JC z3U)y<3)#@v>!L#SseLm)QxoWMj@9Y$yx_}aaQiT7Nr@33bhhg19 zW;&tfi$7u4jblE49)ZM%X4*loY(GzIJKE6ZHuatGrE7^wQ}{HNgNOcGkPxxD$;-pl z()Y?&VQ8^HCfqn7$$=d^n%1zDl9SdmcRhs*-;nw9KT%_6n97CLKuoAFr-Qz4Jtxc@ zu7{*@M+sFMg}wbLtl~Z0sDIT--dOFU7Fw(u8=sh*nx2`RTUlLO-}t_{wY_t6d~$kresOtq{WD)b^ZBpvN5&rI3mu#IwIPtRDjj0Ku^UCip>*!s0Awf#aOFXv0|Wtg${8Wlfd7-HG%f20r+Ut5mtXG%)eF>k zt17bqQPL;c72J4IEih`uYK}NO7D+YJ(hc*g zTOLU_#FwF6T3N_+PsndF#7T)?^={&qW}h~RcH+8uuNOLX?*?J-L!gCyZ6Q;ogrS;Hv&ghSG@Fq|IB&+ zeBPe->txGj|G+%}isT*;t{%PPTpySHz3?t~^#q!pa_oxZcsL*4fRz-3PIJ&a%!NEL zQn<@q_pS8G$7ic%R4Fo*$(jgnT@BPJJ_zq{-3;9WJUR1Axy~bqr*$T)2zL?a>4&p3 z&DF=GDbBCM$|T>x)Xt(wsJySD4kOC1Z$oSmi)cePZ{KeM;h1suiBL0AT@YOE`~GDzqp zbtLs@RW~SN$aFB|a4z3ARuU4`qHlGg^?wdWZnlY!zs6@P-%t@Sd?ADONuK3u!+xRy z&$#dT?J|G|aXL5Ke`3vw?H+(GX~w31nAl;)>guJFD=lW+W_hLV!St?#3vYgjs-7Np zaerE}CgetuplZyw`RI*?UuyJ|$>rCtZMU_sMO8H{-&yU0I&18@Fr~;x~Vi; zYxCp@s_2#{ia_~B6out?3$v_lxOgeSWnqdtnuyF*+G654^_!=2u|fV*i!cHfhC83U zeDam;oPs`zVLO>#T7$$E7(q>M?g1k(rqll4E;lu_HIQ~W(-10sx}Q~FRIAxl&;%$8 zti6E1^Y4~(X#=FH8?KOGaC|Owt)2@%uS|Q{+WL}|^I(A1hq9-)gq-W?vO_m5x#-AN z(ZQZ{`ZW}|DJ|ImkNO3x7=T--?%;;mb`R*Gh7u1M22Ir613vK|++D!k1D5b5nPIHSUdB@R-J)q;6wGn7FD}&>7um!~iki(IPsk57(u`9tnfo*uz6Fu3%(n_2W<4H zPm|pP1nvQh$AVlQjzf5fPTITW(8ILH)uPoe^-87}(!`jv^El1}`x$`=D zx*GHCQPk*Ci`H?t$p#yvD$GQ3!?k3EbF_%Nt<5CO;cN9{^j4YfkyYh765n5>xY|+? z3Njgfa0^3rzy|j$eP-9^Wws@=eb&f4i%GWmg9mJ!e(a%03OImh(uLFp%&3~Eup>Qh z(lpZr0{DI|8sS)9-&3vO6zQsQMu$-g$ky^jYe%^xoDyHCFNh&b{IphSDH>V__EDiL zX_0Vo8$t%?K|XZOxQJLUvBY61w;=O+L|{=QKi#s8+_Dzw?9@B33Ipu|xN}%p(b#fHKa^F9=e4DGyM!}YyYtYML2Ukl3anYrbnMkL0Oqp`$(4Y=- z?KlQmP9Jy4VllTi7>Ws}e$322%NAW%&blNG91rGByZWM;2ea$t>p5jj${mf14z_p zQ0gK+E)yeCm;6Hat#bh0>e~dfNPx9?TL%Y^(HVK((ZEu8ItG1LtKSZ0Z!~nU)9m{l zQICyA9{`?=cg)FC6H8C^ysbH}FJ+-OgchU3Qb<8+vUR&*z7cT}AhdK;;0T-ycvR;C zkLt;{OWZ4s^UOWcnEr#5Qco6l?90pb2e^todD4ab2AL|U3mmCm2wZ#Rr!x#44XjE@ zpa+?=@B;KWA||Db71jhzXk6buCC)$SkzElC260Z2)gcEx*WzC8!77hQFOoHvPfZMhP`d+-MsZYQtsiA?`UY! zfFFZ%JI#YyQP-l)61G0iPc6EaofSqUlTo*FD$+_#@%hZ zgMMT-&wIx7SPGg)hN|Pfd45DR!5sB*FL(B6!0{d+(PJ=j4?sI*KfedGHMuJsNpz5) z?j#rYHBK;CUJP-IiR{${*nFa1e)3-3N8(1w13wu^DL}lymN-0`wGFxloX*dH#G4~7 zfu&~6)Q47a1*Ye+xn>E>);^PKuLh-~nN$%Jd-)Mc>%LNa!~>Sy5IK+Qa*UFv_`hBY z&btRxHdpMIIvqPrdm7z62?(Js4HuL_yd2wH4Gf9Kuyo9=BQ&HLvp^1;Rc;8s6Ez(7 zU2Go6Xyy$nr;~HarxRdM;bwH#Uu>$W%&cm>;MalWNJCATQ&MhmH@nF3(8cYt#;wj~ zk<9DE4t$jZnx%h!J^3^*0pwc7@Aml&%Zvou!+;~(nm9ARsW@fR1ALvHYhRUa_~wG%cY@fE|y@w%rlQ>+sk=&zl1D4%~H0vyQiU(f#G?U%~)*RJ;&^qIsh*mY>toU{tB+3zR(hRn}x{6fpAlcLa z9u}XT*CfNWOlAd`##4nKtW$H;H*e_diT6h)3Gt;Gve(=t*xv($Lziw=Q9+y%=el3- zU>Si2L4ubHuevXR9aGKtWgPKuMbYgxhdg^IAg*j^?kB_xH~*5ff@yW8dD^Ehl7-&iv8uMLP>cb$ zUKrm4yb(a`-&;sdiL}AT;u9o&zDvfL5L-5)Fvd#;g|`WF@yh3Vpt+XfG+nx{_4&8A zQDp+6h5AUxjHoC&i~;0z1_9jNZEeFACpx>K%(Hqt8dBUI1zp;Ua%#?!r@55bH>U!D zaB-uZqpBvlV$I23=3E(ByXyAlUGFX2v5CS(zeDzKTT4Sn=&H)9Wk- z>;X--cCq#zpqaW^<*_8#0Ssb=ul}~fjHSb^ODw-glz-x|7H1fFUdKM^BG@iKJ)T(| zaXhbtTTsC`e-Eh0Cew^-=U8Z5qwT5kNHgfJ{UL|rU|}?#YE-o5mI7RkyEJzK8jp2& zU8lXUmrw;SG>&DKtY>f9OFogHnKn56m_L6Bcn<(XazY~`o8-Vezhyn}_lQC}dJ;jV z_fljQ5~?nR*W;TB!=~UKL5=6<%K}XXf??49EJd&qg(r;}G%{lJENw!sj(vn~rdD{I$oWiCk-F^IKzLe+ovZLXFgAB zIi7A2Ogdw)I}&YgrkQGfx~NeVcV3n+>5P?EeeID438NqcBO!tZ67=_2a6DvPjnUzq zH+8FIj_w)oWS`$2=6dQKdG0v`RB=&PTrKCR$Rzo3wrA9o+O+w+PyQkyzxM}-sCa+h z3%>_1QJO912oEkKp+fK4PEBX*g1@)VtmUrJeW>M!{))7wUzE%7EFLnlP$H2VDkoI_ z?bl*Y#>0aSrc2H?ExAx@7j}5Mm6;kL00sVYF6is)>CNKw)_Xv(;v#~{;rB8MjSkYX z4^VyGu!}qq_kfOlivxKd9@X!Ghq)b2JpPr{&L8IEq7h;XKQHz`6Q>f~K?(T38VMAj zSDQAzu8<|Q} zH;3rs6hIMXf@od<8rP$;;Cg<8eT+}OIKrQdV8}bm5eIb_zJ!jS=+nT7D0?0^|)|Ae{)fObMC+ zaXMC#*m-5EkF)z*-!xY#xGK!H_T-gv*WcAPI-A%WNm^UYOM8r(-6TMj$nB%neAd^x zA-GxI^sS=yNNK|04XS7`itgjvJR)O??g5tR#Ebf# z9}Oyn!-6TwNFA*NE-YIvkFTd^?g0q5vhHh)fo{ZAd9FaqMqiI+r9GW}a_{+UBe0AJ z-16Q7KC68NT?0Wh4VJiK<%jzTmO0zieP)JM4bKAj_JmWH)kojD48l^S8v14SQJi_{ zM$kpl4;`{^^7UZvy_t-jmhe1#)gXqYKAdifr6>mYfB6C4&;HrDI35x@VF-91f(g6} z1GZN8Z)c{zHd}sPA}tyl3IQM41}wXOK6ve*erh-yESoA8fkl0)(0>l$NB=yd+K9r~ zS$exc-LYJ{I{Qm(nz+c|7NJ?Sv;24>zbQ#r1qvxGGK(eeG@<*u)`T0VZ|~_|8oRUe z6cQfF!r9cg-&^rcS4<1f=e?1-Tdz>*4bWm=##+-M$EuG>Q_-l?oOj^h63kDm1_im5 z5|6`-2T^xZCdZa7Cm$?D9|W{HXw~lXQMP6WO|Lyec+MKQX?~(zuyB49QYkIFlY7bB zxl6-IWUX~abBwW3l@dGp$t>*E=fx{LZLe*&&CaE43GJ23bl&L zSFU!@vTV)?LoHbe52xO=am%~z{CQ;%c%K$<=xe9Nqc9_+`&a7cY*d8sOZwXVu8qg*J9>jE^3OHs2sTY>;6AU;*H}EZ_~Y znY-}FBJf)^_`&?IigPe{^Uhe=!S$W7{m-gH9+Z6I!-OZa(iH4$3i6~ERiwabC#7}X zfuM;c+ZHm-#8_J}zB-O(91@huNYMCU#0GW041rP4zK{h68|m(AC^TieU~5+S`U@hG zYxPn#SUKowUx=l?JCb9XVgs9LZ!Z#LDe<|MKT&gQ@9eGOH_JNYEbUA8@i+?aO`_n{ z7}$y6v^LHHAJUA<*4%-OAhTCcI&N&;wklJTb@_KRbY4Q`e|@n)-&6Kg5LhZ{ev?Wk zGh^p}OJ$f+n_LGIaufLxs^b2LlZ>zGE*gBBKhzlP1@%$=CywCNcf03jwPu_=;ZQZ* zUI$nF(-l2AB{Mi+gZ7AN3puIYQEFz&IJfp!ZYQnyum-VtMczIK5Laur*XG}kivtz{ zO(2X90?J-4DbbSE+7Dij_3gH_rd(M0R@*`%0`HqZsfOISlon4Um)7b*{) zBI-4Np0fr_0NmV)X!4>h6-S#u{sBsWPc9$6NWzrZx&vQQr<$EWY1f-<>|24245cP~ zws!ixl<5NOh@s{R%1|X0Bj!-YcO)lCy=4Zc_PON4K{463RH_#Vlk1&!b!YVx0qig& z=R6o+7vu&+#A7*ds-S9oxx4DQ4Udlaq_jgkabwFVS|7JbWb)l zuBoO=u@1yBgZLNt_K^W!lER8@-|qE^&iW4yAcN?riG(kpxAUyK08XD~g ztmM6n<^42_E$G_RHuKj_&cohs$q3w27K57|`tME7(Av)Uf7;w1?d|7JzvxkOUnZ=8 z12}iMz9y=jt$;j#D=b)A_}!Tq-Jo2{M5^f2sq;Nt%PM->A1t7yE3PX;o`vbS8YshT zHGBjpaXtl+1f^ou@ z=GBP;j$5_1$~he*3!Znn$jDO??J2nJ+x3-&kX?nP>&M$iOVEXQ;M^!SB0onkl*9u% zhw2Wc`=6P41H)0h@EB)f#wqFQnV$GGE?r*34g9rTQH4azLPD@;_Jc(e^G~AbXzyTc z`9H$>Ae@zB^70*|Pv5UJ1TT5pn2cC0Ol9w_&h7m$aAWrqnfDV!88J7!-7nwDA#OBv z^1bc75fZ8PRKy7TRzJM;RGbwOVtR1mqm|vI4c{kr=wW4DWiz&~E1g8&aB4Vbo7nkl zn%AEA`8jdFYdYY>(N5@Q<%87WE@bq@e zQv80}$Z}@eY5$1p?6bO2`Vj*BMgvb^sj8Bist5+w!8nE(#oT9yv=TH;OpJro;}45_ zOQc)!frjvGsw>;_@#Ax*-2SUuoaI2LMI3xkvw-wH+a_*Il?vzW_3G-g5Mim#u=AdF*JguN(|+XdGA9Z z{(RFGwYG9FwsO!{akVkF*ZnDD3etZDNVE`)po0O9;JGE(;_YwY4Ez^;JL7lujK9uh zKaPlH!Ry}y{`gP-dZfQa1OEklCfvrxf$^8^yFWRSdT?v=&uJ{+3I1Qx9$W=IrqQqp z%wU4kr3yYS_H&?k2=w69!%x~D8MCo7wg(rFfrFW~)z8BD%Z!fsVQs~M8?7?9h_N0> z;5UD8f&GL%#yn2WEqe#|7Wg1|Bhw!alpi26;A;IXbH7ULS0Oz{Jodr-fH1-S?}%R| z^BD2?Q2qmgi1;_ezl^f~Q9{2`^w>S(KPQueOaI^b`;X)YmxKSD{DSnKkRROm{T=zI zgRY0bNcK<2zq!WyJM>Qna}R;z**`%)xSM-Se(bdEfy_t#8~IcrI7zF z9Dgp36pG)-|FH`HaMJU?ME|)sGAREM`aibJ-xK|3avs$`A^+#@=s%N7p8pf_gXgNp zRrsIDmDK-){NN4hG5N7ir3c}tfAJUO-&*z`mG_wU*dxmWZxAdY|E*R3&imz`2VA7m-{XGuoR4vj4GlctnpFQD_iJ2wjC*`x_W{?b_4l}6gVAH$f9?;G z^#20)TbKSvWj|b;drW?O{p=y3>97AFKfa9i2jM^8I(Q)Ly#0@N5FRJvu}b{`qV)cc zWc-{y{acm!IQnD7?n87Wpa06mpVhpN0gsiZ4}h)z0{lsp`Z)TZm3R-40f2PB-^$>> zRC Date: Tue, 14 Jun 2022 07:33:42 +0000 Subject: [PATCH 3/8] Upload New File --- .../e-line-examples-c-vlan-bridge.json | 143 ++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 json-examples/e-line-examples-c-vlan-bridge.json diff --git a/json-examples/e-line-examples-c-vlan-bridge.json b/json-examples/e-line-examples-c-vlan-bridge.json new file mode 100644 index 0000000..a62c1d1 --- /dev/null +++ b/json-examples/e-line-examples-c-vlan-bridge.json @@ -0,0 +1,143 @@ +{ + "ieee802-dot1q-bridge:bridges": { + "bridge": [ + { + "name": "ne2", + "address": "10-10-10-10-10-10", + "bridge-type": "ieee802-dot1q-bridge:customer-vlan-bridge", + "component": [ + { + "name": "cv0", + "id": 0, + "type": "ieee802-dot1q-bridge:c-vlan-component", + "bridge-port": [ + "eth1", + "eth2", + "eth3" + ], + "filtering-database": { + "vlan-registration-entry": [ + { + "database-id": 1, + "vids": "200", + "entry-type": "static", + "port-map": [ + { + "port-ref": 1, + "static-vlan-registration-entries": { + "vlan-transmitted": "tagged" + } + }, + { + "port-ref": 3, + "static-vlan-registration-entries": { + "vlan-transmitted": "tagged" + } + } + ] + }, + { + "database-id": 1, + "vids": "300", + "entry-type": "static", + "port-map": [ + { + "port-ref": 2, + "static-vlan-registration-entries": { + "vlan-transmitted": "untagged" + } + }, + { + "port-ref": 3, + "static-vlan-registration-entries": { + "vlan-transmitted": "tagged" + } + } + ] + } + ] + }, + "bridge-vlan": { + "vlan": [ + { + "vid": 200, + "name": "E-Line 200", + "egress-ports": [ + "eth1", + "eth3" + ] + }, + { + "vid": 300, + "name": "E-Line 300", + "untagged-ports": [ + "eth2" + ], + "egress-ports": [ + "eth2", + "eth3" + ] + } + ] + } + } + ] + } + ] + }, + "ietf-interfaces:interfaces": { + "interface": [ + { + "name": "eth1", + "type": "iana-if-type:ethernetCsmacd", + "oper-status": "up", + "statistics": { + "discontinuity-time": "2022-04-06T11:00:00+02:00" + }, + "ieee802-dot1q-bridge:bridge-port": { + "bridge-name": "ne2", + "component-name": "cv0", + "port-type": "ieee802-dot1q-bridge:c-vlan-bridge-port", + "pvid": 1, + "acceptable-frame": "admit-only-VLAN-tagged-frames", + "enable-ingress-filtering": true, + "port-number": 1 + } + }, + { + "name": "eth2", + "type": "iana-if-type:ethernetCsmacd", + "oper-status": "up", + "statistics": { + "discontinuity-time": "2022-04-06T11:00:00+02:00" + }, + "ieee802-dot1q-bridge:bridge-port": { + "bridge-name": "ne2", + "component-name": "cv0", + "port-type": "ieee802-dot1q-bridge:c-vlan-bridge-port", + "pvid": 300, + "acceptable-frame": "admit-only-untagged-and-priority-tagged", + "enable-ingress-filtering": true, + "port-number": 2 + } + }, + { + "name": "eth3", + "type": "iana-if-type:ethernetCsmacd", + "oper-status": "up", + "statistics": { + "discontinuity-time": "2022-04-06T11:00:00+02:00" + }, + "ieee802-dot1q-bridge:bridge-port": { + "bridge-name": "ne2", + "component-name": "cv0", + "port-type": "ieee802-dot1q-bridge:c-vlan-bridge-port", + "pvid": 1, + "acceptable-frame": "admit-only-VLAN-tagged-frames", + "enable-ingress-filtering": true, + "port-number": 3 + } + } + ] + } + } \ No newline at end of file -- GitLab From 21abf5eff6a45842f308efcf4fbf1905fc29b6e8 Mon Sep 17 00:00:00 2001 From: busii Date: Tue, 14 Jun 2022 07:33:55 +0000 Subject: [PATCH 4/8] Upload New File --- .../e-line-examples-provider-bridge.json | 277 ++++++++++++++++++ 1 file changed, 277 insertions(+) create mode 100644 json-examples/e-line-examples-provider-bridge.json diff --git a/json-examples/e-line-examples-provider-bridge.json b/json-examples/e-line-examples-provider-bridge.json new file mode 100644 index 0000000..a74cb6c --- /dev/null +++ b/json-examples/e-line-examples-provider-bridge.json @@ -0,0 +1,277 @@ +{ + "ieee802-dot1q-bridge:bridges": { + "bridge": [ + { + "name": "ne1", + "address": "10-10-10-10-10-10", + "bridge-type": "ieee802-dot1q-bridge:provider-edge-bridge", + "component": [ + { + "name": "sv0", + "id": 0, + "type": "ieee802-dot1q-bridge:s-vlan-component", + "bridge-port": [ + "eth3", + "eth4", + "eth5" + ], + "filtering-database": { + "vlan-registration-entry": [ + { + "database-id": 1, + "vids": "200", + "entry-type": "static", + "port-map": [ + { + "port-ref": 1, + "static-vlan-registration-entries": { + "vlan-transmitted": "untagged" + } + }, + { + "port-ref": 5, + "static-vlan-registration-entries": { + "vlan-transmitted": "tagged" + } + } + ] + }, + { + "database-id": 1, + "vids": "300", + "entry-type": "static", + "port-map": [ + { + "port-ref": 2, + "static-vlan-registration-entries": { + "vlan-transmitted": "untagged" + } + }, + { + "port-ref": 5, + "static-vlan-registration-entries": { + "vlan-transmitted": "tagged" + } + } + ] + }, + { + "database-id": 1, + "vids": "400", + "entry-type": "static", + "port-map": [ + { + "port-ref": 3, + "static-vlan-registration-entries": { + "vlan-transmitted": "untagged" + } + }, + { + "port-ref": 5, + "static-vlan-registration-entries": { + "vlan-transmitted": "tagged" + } + } + ] + }, + { + "database-id": 1, + "vids": "500", + "entry-type": "static", + "port-map": [ + { + "port-ref": 4, + "static-vlan-registration-entries": { + "vlan-transmitted": "tagged" + } + }, + { + "port-ref": 5, + "static-vlan-registration-entries": { + "vlan-transmitted": "tagged" + } + } + ] + } + ] + }, + "bridge-vlan": { + "vlan": [ + { + "vid": 200, + "name": "E-Line 200", + "untagged-ports": [ + "eth1" + ], + "egress-ports": [ + "eth1", + "eth5" + ] + }, + { + "vid": 300, + "name": "E-Line 300", + "untagged-ports": [ + "eth2" + ], + "egress-ports": [ + "eth2", + "eth5" + ] + }, + { + "vid": 400, + "name": "E-Line 400", + "untagged-ports": [ + "eth3" + ], + "egress-ports": [ + "eth3", + "eth5" + ] + }, + { + "vid": 500, + "name": "E-Line 500", + "egress-ports": [ + "eth4", + "eth5" + ] + } + ] + } + }, + { + "name": "cv1", + "id": 1, + "type": "ieee802-dot1q-bridge:c-vlan-component", + "bridge-port": [ + "eth1" + ] + }, + { + "name": "cv2", + "id": 2, + "type": "ieee802-dot1q-bridge:c-vlan-component", + "bridge-port": [ + "eth2" + ] + } + ] + } + ] + }, + "ietf-interfaces:interfaces": { + "interface": [ + { + "name": "eth1", + "type": "iana-if-type:ethernetCsmacd", + "oper-status": "up", + "statistics": { + "discontinuity-time": "2022-03-23T11:00:00+02:00" + }, + "ieee802-dot1q-bridge:bridge-port": { + "bridge-name": "ne1", + "component-name": "cv1", + "port-type": "ieee802-dot1q-bridge:customer-edge-port", + "pvid": 1, + "acceptable-frame": "admit-only-VLAN-tagged-frames", + "enable-ingress-filtering": true, + "port-number": 1, + "ieee802-dot1q-pb:cvid-registration": [ + { + "cvid": 100, + "svid": 200, + "untagged-pep": false, + "untagged-cep": false + } + ] + } + }, + { + "name": "eth2", + "type": "iana-if-type:ethernetCsmacd", + "oper-status": "up", + "statistics": { + "discontinuity-time": "2022-03-23T11:00:00+02:00" + }, + "ieee802-dot1q-bridge:bridge-port": { + "bridge-name": "ne1", + "component-name": "cv2", + "port-type": "ieee802-dot1q-bridge:customer-edge-port", + "pvid": 1, + "acceptable-frame": "admit-only-untagged-and-priority-tagged", + "enable-ingress-filtering": true, + "port-number": 2, + "ieee802-dot1q-pb:cvid-registration": [ + { + "cvid": 1, + "svid": 300, + "untagged-pep": true, + "untagged-cep": true + } + ] + } + }, + { + "name": "eth3", + "type": "iana-if-type:ethernetCsmacd", + "oper-status": "up", + "statistics": { + "discontinuity-time": "2022-03-23T11:00:00+02:00" + }, + "ieee802-dot1q-bridge:bridge-port": { + "bridge-name": "ne1", + "component-name": "sv0", + "port-type": "ieee802-dot1q-bridge:customer-network-port", + "pvid": 400, + "acceptable-frame": "admit-only-untagged-and-priority-tagged", + "enable-ingress-filtering": true, + "port-number": 3 + } + }, + { + "name": "eth4", + "type": "iana-if-type:ethernetCsmacd", + "oper-status": "up", + "statistics": { + "discontinuity-time": "2022-03-23T11:00:00+02:00" + }, + "ieee802-dot1q-bridge:bridge-port": { + "bridge-name": "ne1", + "component-name": "sv0", + "port-type": "ieee802-dot1q-bridge:customer-network-port", + "pvid": 1, + "acceptable-frame": "admit-only-VLAN-tagged-frames", + "enable-ingress-filtering": true, + "port-number": 4, + "enable-vid-translation-table": true, + "enable-egress-vid-translation-table": false, + "vid-translations": [ + { + "local-vid": 100, + "relay-vid": 500 + } + ] + } + }, + { + "name": "eth5", + "type": "iana-if-type:ethernetCsmacd", + "oper-status": "up", + "statistics": { + "discontinuity-time": "2022-03-23T11:00:00+02:00" + }, + "ieee802-dot1q-bridge:bridge-port": { + "bridge-name": "ne1", + "component-name": "sv0", + "port-type": "ieee802-dot1q-bridge:provider-network-port", + "pvid": 1, + "acceptable-frame": "admit-only-VLAN-tagged-frames", + "enable-ingress-filtering": true, + "port-number": 5 + } + } + ] + } + } \ No newline at end of file -- GitLab From 31b55713821e16b2dab001fa9275770217be19cd Mon Sep 17 00:00:00 2001 From: busii Date: Tue, 14 Jun 2022 07:34:09 +0000 Subject: [PATCH 5/8] Upload New File --- json-examples/ieee802-dot1q-bridge.yang | 1795 +++++++++++++++++++++++ 1 file changed, 1795 insertions(+) create mode 100644 json-examples/ieee802-dot1q-bridge.yang diff --git a/json-examples/ieee802-dot1q-bridge.yang b/json-examples/ieee802-dot1q-bridge.yang new file mode 100644 index 0000000..2c7d9f9 --- /dev/null +++ b/json-examples/ieee802-dot1q-bridge.yang @@ -0,0 +1,1795 @@ +module ieee802-dot1q-bridge { + yang-version "1.1"; + namespace urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge; + prefix dot1q; + import ieee802-types { + prefix ieee; + } + import ietf-yang-types { + prefix yang; + } + import ietf-interfaces { + prefix if; + } + import iana-if-type { + prefix ianaif; + } + import ieee802-dot1q-types { + prefix dot1qtypes; + } + organization + "IEEE 802.1 Working Group"; + contact + "WG-URL: http://ieee802.org/1/ + WG-EMail: stds-802-1-l@ieee.org + + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway, NJ 08854 + USA + + E-mail: stds-802-1-chairs@ieee.org"; + description + "This YANG module describes the bridge configuration model for the + following IEEE 802.1Q Bridges: + 1) Two Port MAC Relays + 2) Customer VLAN Bridges + 3) Provider Bridges. + + Copyright (C) IEEE (2022). + + This version of this YANG module is part of IEEE Std 802.1Q; see the + standard itself for full legal notices."; + revision 2022-05-06 { + description + "Rebase Qrev with Qcw updates."; + reference + "IEEE Std 802.1Q-2022, Bridges and Bridged Networks."; + } + revision 2022-01-19 { + description + "Published as part of IEEE Std 802.1Q-2022."; + reference + "IEEE Std 802.1Q-2022, Bridges and Bridged Networks."; + } + revision 2020-11-06 { + description + "Published as part of IEEE Std 802.1Qcr-2020. Third version."; + reference + "IEEE Std 802.1Qcr-2020, Bridges and Bridged Networks - + Asynchronous Traffic Shaping."; + } + revision 2020-06-04 { + description + "Published as part of IEEE Std 802.1Qcx-2020. Second version."; + reference + "IEEE Std 802.1Qcx-2020, Bridges and Bridged Networks - YANG Data + Model for Connectivity Fault Management."; + } + revision 2018-03-07 { + description + "Published as part of IEEE Std 802.1Q-2018. Initial version."; + reference + "IEEE Std 802.1Q-2018, Bridges and Bridged Networks."; + } + feature ingress-filtering { + description + "Each Port may support an Enable Ingress Filtering parameter. A + frame received on a Port that is not in the member set (8.8.10) + associated with the frames VID shall be discarded if this + parameter is set. The default value for this parameter is reset, + i.e., Disable Ingress Filtering, for all Ports. Any Port that + supports setting this parameter shall also support resetting it. + The parameter may be configured by the management operations + defined in Clause 12."; + reference + "8.6.2 of IEEE Std 802.1Q-2022"; + } + feature extended-filtering-services { + description + "Extended Filtering Services support the filtering behavior + required for regions of a network in which potential recipients of + multicast frames exist, and where both the potential recipients of + frames and the Bridges are able to support dynamic configuration + of filtering information for group MAC addresses. In order to + integrate this extended filtering behavior with the needs of + regions of the network that support only Basic Filtering Services, + Bridges that support Extended Filtering Services can be statically + and dynamically configured to modify their filtering behavior on a + per-group MAC address basis, and also on the basis of the overall + filtering service provided by each outbound Port with regard to + multicast frames. The latter capability permits configuration of + the Ports default forwarding or filtering behavior with regard to + group MAC addresses for which no specific static or dynamic + filtering information has been configured."; + reference + "8.8.4, Clause 10 of IEEE Std 802.1Q-2022"; + } + feature port-and-protocol-based-vlan { + description + "A VLAN-aware bridge component implementation in conformance to + the provisions of this standard for Port-and-Protocol-based VLAN + classification (5.4.1) shall 1) Support one or more of the + following Protocol Classifications and Protocol Template formats: + Ethernet, RFC_1042, SNAP_8021H, SNAP_Other, or LLC_Other (6.12); + and may 2) Support configuration of the contents of the Protocol + Group Database."; + reference + "5.4.1.2 of IEEE Std 802.1Q-2022"; + } + feature flow-filtering { + description + "Flow filtering support enables Bridges to distinguish frames + belonging to different client flows and to use this information in + the forwarding process. Information related to client flows may be + used at the boundary of an SPT Domain to generate a flow hash + value. The flow hash, carried in an F-TAG, serves to distinguish + frames belonging to different flows and can be used in the + forwarding process to distribute frames over equal cost paths. + This provides for finer granularity load spreading while + maintaining frame order for each client flow."; + reference + "44.2 of IEEE Std 802.1Q-2022"; + } + feature simple-bridge-port { + description + "A simple bridge port allows underlying (MAC) layers to share the + same Interface as the Bridge Port."; + } + feature flexible-bridge-port { + description + "A flexible bridge port supports an Interface that is a Bridge + Port to be a separate Interface from the underlying (MAC) layer."; + } + identity type-of-bridge { + description + "Represents the configured Bridge type."; + } + identity customer-vlan-bridge { + base type-of-bridge; + description + "Base identity for a Customer VLAN Bridge."; + } + identity provider-bridge { + base type-of-bridge; + description + "Base identity for a Provider Bridge (PB)."; + } + identity provider-edge-bridge { + base type-of-bridge; + description + "Base identity for a Provider Edge Bridge (PEB)."; + } + identity two-port-mac-relay-bridge { + base type-of-bridge; + description + "Base identity for a Two Port MAC Relay (TPMR)."; + } + identity type-of-component { + description + "Represents the type of Component."; + } + identity c-vlan-component { + base type-of-component; + description + "Base identity for a C-VLAN component."; + } + identity s-vlan-component { + base type-of-component; + description + "Base identity for a S-VLAN component."; + } + identity d-bridge-component { + base type-of-component; + description + "Base identity for a VLAN unaware component."; + } + identity edge-relay-component { + base type-of-component; + description + "Base identity for an EVB station ER component."; + } + identity type-of-port { + description + "Represents the type of Bridge port."; + } + identity c-vlan-bridge-port { + base type-of-port; + description + "Indicates the port can be a C-TAG aware port of an enterprise + VLAN aware Bridge."; + } + identity provider-network-port { + base type-of-port; + description + "Indicates the port can be an S-TAG aware port of a Provider + Bridge or Backbone Edge Bridge used for connections within a PBN + (Provider Bridged Network) or PBBN (Provider Backbone Bridged + Network)."; + } + identity customer-network-port { + base type-of-port; + description + "Indicates the port can be an S-TAG aware port of a Provider + Bridge or Backbone Edge Bridge used for connections to the + exterior of a PBN (Provider Bridged Network) or PBBN (Provider + Backbone Bridged Network)."; + } + identity customer-edge-port { + base type-of-port; + description + "Indicates the port can be a C-TAG aware port of a Provider Bridge + used for connections to the exterior of a PBN (Provider Bridged + Network) or PBBN (Provider Backbone Bridged Network)."; + } + identity d-bridge-port { + base type-of-port; + description + "Indicates the port can be a VLAN-unaware member of an 802.1Q + Bridge."; + } + identity remote-customer-access-port { + base type-of-port; + description + "Indicates the port can be an S-TAG aware port of a Provider + Bridge capable of providing Remote Customer Service Interfaces."; + } + identity bridge-interface { + description + "Generic interface property that represents any interface that can + be associated with an IEEE 802.1Q compliant Bridge component. Any + new Interface types would derive from this identity to + automatically pick up Bridge related configuration or operational + data."; + } + container bridges { + description + "Contains the Bridge(s) configuration information."; + list bridge { + key "name"; + unique "address"; + description + "Provides configuration data in support of the Bridge + Configuration resources. There is a single bridge data node per + Bridge."; + leaf name { + type dot1qtypes:name-type; + description + "A text string associated with the Bridge, of locally + determined significance."; + reference + "12.4 of IEEE Std 802.1Q-2022"; + } + leaf address { + type ieee:mac-address; + mandatory true; + description + "The MAC address for the Bridge from which the Bridge + Identifiers used by the STP, RSTP, and MSTP are derived."; + reference + "12.4 of IEEE Std 802.1Q-2022"; + } + leaf bridge-type { + type identityref { + base type-of-bridge; + } + mandatory true; + description + "The type of Bridge."; + } + leaf ports { + type uint16 { + range "1..4095"; + } + config false; + description + "The number of Bridge Ports (MAC Entities)"; + reference + "12.4 of IEEE Std 802.1Q-2022"; + } + leaf up-time { + type yang:zero-based-counter32; + units "seconds"; + config false; + description + "The count in seconds of the time elapsed since the Bridge was + last reset or initialized."; + reference + "12.4 of IEEE Std 802.1Q-2022"; + } + leaf components { + type uint32; + config false; + description + "The number of components associated with the Bridge."; + } + list component { + key "name"; + description + "The set of components associated with a given Bridge. For + example, - A TPMR is associated with a single VLAN unaware + component. - A Customer VLAN Bridge is associated with a + single VLAN aware component. - A Provider Bridge is associated + with a single S-VLAN component and zero or more C-VLAN + components."; + reference + "Item 1)a in 12.4.1.5 of IEEE Std 802.1Q-2022"; + leaf name { + type string; + description + "The name of the Component."; + } + leaf id { + type uint32; + description + "Unique identifier for a particular Bridge component within + the system."; + reference + "Item l) in 12.3 of IEEE Std 802.1Q-2022"; + } + leaf type { + type identityref { + base type-of-component; + } + mandatory true; + description + "The type of component used to classify a particular Bridge + component within a Bridge system comprising multiple + components."; + reference + "Item m) in 12.3 of IEEE Std 802.1Q-2022"; + } + leaf address { + type ieee:mac-address; + description + "Unique EUI-48 Universally Administered MAC address assigned + to a Bridge component."; + reference + "13.24, 8.13.8 of IEEE Std 802.1Q-2022"; + } + leaf traffic-class-enabled { + type boolean; + default "true"; + description + "Indication of Traffic Classes enablement associated with + the Bridge Component. A value of True indicates that Traffic + Classes are enabled on this Bridge Component. A value of + False indicates that the Bridge Component operates with a + single priority level for all traffic."; + reference + "12.4.1.5.1 of IEEE Std 802.1Q-2022"; + } + leaf ports { + type uint16 { + range "1..4095"; + } + config false; + description + "The number of Bridge Ports associated with the Bridge + Component."; + reference + "Item c) in 12.4.1.1.3 of IEEE Std 802.1Q-2022"; + } + leaf-list bridge-port { + type if:interface-ref; + config false; + description + "List of bridge-port references."; + } + container capabilities { + config false; + description + "Array of Boolean values of the feature capabilities + associated with a given Bridge Component."; + reference + "Item b) in 12.10.1.1.3, 12.4.1.5.2 of IEEE Std 802.1Q-2022"; + leaf extended-filtering { + type boolean; + default "false"; + description + "Can perform filtering on individual multicast addresses + controlled by MMRP."; + reference + "12.4.1.5.2 of IEEE Std 802.1Q-2022"; + } + leaf traffic-classes { + type boolean; + default "false"; + description + "Can map priority to multiple traffic classes."; + reference + "12.4.1.5.2 of IEEE Std 802.1Q-2022"; + } + leaf static-entry-individual-port { + type boolean; + default "false"; + description + "Static entries per port."; + reference + "12.4.1.5.2 of IEEE Std 802.1Q-2022"; + } + leaf ivl-capable { + type boolean; + default "true"; + description + "Independent VLAN Learning (IVL)."; + reference + "12.4.1.5.2 of IEEE Std 802.1Q-2022"; + } + leaf svl-capable { + type boolean; + default "false"; + description + "Shared VLAN Learning (SVL)."; + reference + "12.4.1.5.2 of IEEE Std 802.1Q-2022"; + } + leaf hybrid-capable { + type boolean; + default "false"; + description + "Both IVL and SVL simultaneously."; + reference + "12.4.1.5.2 of IEEE Std 802.1Q-2022"; + } + leaf configurable-pvid-tagging { + type boolean; + default "false"; + description + "Whether the implementation supports the ability to + override the default PVID setting and its egress status + (VLAN-tagged or Untagged) on each port."; + reference + "12.4.1.5.2 of IEEE Std 802.1Q-2022"; + } + leaf local-vlan-capable { + type boolean; + default "false"; + description + "Can support multiple local Bridges, outside the scope of + 802.1Q defined VLANs."; + reference + "12.4.1.5.2 of IEEE Std 802.1Q-2022"; + } + } + container filtering-database { + when + "not(derived-from-or-self(../../bridge-type, "+ + "'two-port-mac-relay-bridge'))" { + description + "Applies to non TPMRs."; + } + description + "Contains filtering information used by the Forwarding + Process in deciding through which Ports of the Bridge frames + should be forwarded."; + reference + "12.7 of IEEE Std 802.1Q-2022"; + leaf aging-time { + type uint32 { + range "10..10000000"; + } + units "seconds"; + default "300"; + description + "The timeout period in seconds for aging out + dynamically-learned forwarding information."; + reference + "12.7, 8.8.3 of IEEE Std 802.1Q-2022"; + } + leaf size { + type yang:gauge32; + config false; + description + "The maximum number of entries that can be held in the + FDB."; + reference + "12.7 of IEEE Std 802.1Q-2022"; + } + leaf static-entries { + type yang:gauge32; + config false; + description + "The number of Static Filtering entries currently in the + FDB."; + reference + "12.7, 8.8.1 of IEEE Std 802.1Q-2022"; + } + leaf dynamic-entries { + type yang:gauge32; + config false; + description + "The number of Dynamic Filtering entries currently in the + FDB."; + reference + "12.7, 8.8.3 of IEEE Std 802.1Q-2022"; + } + leaf static-vlan-registration-entries { + type yang:gauge32; + config false; + description + "The number of Static VLAN Registration entries currently + in the FDB."; + reference + "12.7, 8.8.2 of IEEE Std 802.1Q-2022"; + } + leaf dynamic-vlan-registration-entries { + type yang:gauge32; + config false; + description + "The number of Dynamic VLAN Registration entries currently + in the FDB."; + reference + "12.7, 8.8.5 of IEEE Std 802.1Q-2022"; + } + leaf mac-address-registration-entries { + if-feature "extended-filtering-services"; + type yang:gauge32; + config false; + description + "The number of MAC Address Registration entries currently + in the FDB."; + reference + "12.7, 8.8.4 of IEEE Std 802.1Q-2022"; + } + list filtering-entry { + key "database-id vids address"; + description + "Information for the entries associated with the Permanent + Database."; + leaf database-id { + type uint32; + description + "The identity of this Filtering Database."; + reference + "12.7.7 of IEEE Std 802.1Q-2022"; + } + leaf address { + type ieee:mac-address; + description + "A MAC address (unicast, multicast, broadcast) for which + the device has forwarding and/or filtering information."; + reference + "12.7.7 of IEEE Std 802.1Q-2022"; + } + leaf vids { + type dot1qtypes:vid-range-type; + description + "The set of VLAN identifiers to which this entry + applies."; + reference + "12.7.7 of IEEE Std 802.1Q-2022"; + } + leaf entry-type { + type enumeration { + enum static { + description + "Static entry type"; + } + enum dynamic { + description + "Dynamic/learnt entry type"; + } + } + description + "The type of filtering entry. Whether static or dynamic. + Static entries can be created, deleted, and retrieved. + However, dynamic entries can only be deleted or + retrieved by the management entity. Consequently, a + Bridge is not required to accept a command that can + alter the dynamic entries except delete a dynamic entry."; + reference + "12.7.7 of IEEE Std 802.1Q-2022"; + } + uses dot1qtypes:port-map-grouping; + leaf status { + type enumeration { + enum other { + description + "None of the following. This may include the case + where some other object is being used to determine + if and how frames addressed to the value of the + corresponding instance of 'address' are being + forwarded."; + } + enum invalid { + description + "This entry is no longer valid (e.g., it was learned + but has since aged out), but has not yet been + flushed from the table."; + } + enum learned { + description + "The value of the corresponding instance of the port + node was learned and is being used."; + } + enum self { + description + "The value of the corresponding instance of the + address node representing one of the devices + address."; + } + enum mgmt { + description + "The value of the corresponding instance of address + node that is also the value of an existing instance."; + } + } + config false; + description + "The status of this entry."; + } + } + list vlan-registration-entry { + key "database-id vids"; + description + "The VLAN Registration Entries models the operations that + can be performed on a single VLAN Registration Entry in + the FDB. The set of VLAN Registration Entries within the + FDB changes under management control and also as a result + of MVRP exchanges"; + reference + "12.7.5 of IEEE Std 802.1Q-2022"; + leaf database-id { + type uint32; + description + "The identity of this Filtering Database."; + reference + "12.7.7 of IEEE Std 802.1Q-2022"; + } + leaf vids { + type dot1qtypes:vid-range-type; + description + "The set of VLAN identifiers to which this entry + applies."; + reference + "12.7.7 of IEEE Std 802.1Q-2022"; + } + leaf entry-type { + type enumeration { + enum static { + description + "Static entry type"; + } + enum dynamic { + description + "Dynamic/learnt entry type"; + } + } + description + "The type of filtering entry. Whether static or dynamic. + Static entries can be created, deleted, and retrieved. + However, dynamic entries can only be deleted or + retrieved by the management entity. Consequently, a + Bridge is not required to accept a command that can + alter the dynamic entries except delete a dynamic entry."; + reference + "12.7.7 of IEEE Std 802.1Q-2022"; + } + uses dot1qtypes:port-map-grouping; + } + } + container permanent-database { + description + "The Permanent Database container models the operations that + can be performed on, or affect, the Permanent Database. + There is a single Permanent Database per FDB."; + leaf size { + type yang:gauge32; + config false; + description + "The maximum number of entries that can be held in the + FDB."; + reference + "12.7.6 of IEEE Std 802.1Q-2022"; + } + leaf static-entries { + type yang:gauge32; + config false; + description + "The number of Static Filtering entries currently in the + FDB."; + reference + "12.7.6 of IEEE Std 802.1Q-2022"; + } + leaf static-vlan-registration-entries { + type yang:gauge32; + config false; + description + "The number of Static VLAN Registration entries currently + in the FDB."; + reference + "12.7.6 of IEEE Std 802.1Q-2022"; + } + list filtering-entry { + key "database-id vids address"; + description + "Information for the entries associated with the Permanent + Database."; + leaf database-id { + type uint32; + description + "The identity of this Filtering Database."; + reference + "12.7.7 of IEEE Std 802.1Q-2022"; + } + leaf address { + type ieee:mac-address; + description + "A MAC address (unicast, multicast, broadcast) for which + the device has forwarding and/or filtering information."; + reference + "12.7.7 of IEEE Std 802.1Q-2022"; + } + leaf vids { + type dot1qtypes:vid-range-type; + description + "The set of VLAN identifiers to which this entry + applies."; + reference + "12.7.7 of IEEE Std 802.1Q-2022"; + } + leaf status { + type enumeration { + enum other { + description + "None of the following. This may include the case + where some other object is being used to determine + if and how frames addressed to the value of the + corresponding instance of 'address' are being + forwarded."; + } + enum invalid { + description + "This entry is no longer valid (e.g., it was learned + but has since aged out), but has not yet been + flushed from the table."; + } + enum learned { + description + "The value of the corresponding instance of the port + node was learned and is being used."; + } + enum self { + description + "The value of the corresponding instance of the + address node representing one of the devices + address."; + } + enum mgmt { + description + "The value of the corresponding instance of address + node that is also the value of an existing instance."; + } + } + config false; + description + "The status of this entry."; + } + uses dot1qtypes:port-map-grouping; + } + } + container bridge-vlan { + when + "not(derived-from-or-self(../../bridge-type, "+ + "'two-port-mac-relay-bridge'))" { + description + "Applies to non TPMRs."; + } + description + "The Bridge VLAN container models configuration information + that modify, or inquire about, the overall configuration of + the Bridges VLAN resources. There is a single Bridge VLAN + Configuration managed object per Bridge."; + reference + "12.10 of IEEE Std 802.1Q-2022"; + leaf version { + type uint16; + config false; + description + "The version number supported."; + reference + "12.10.1.3 of IEEE Std 802.1Q-2022"; + } + leaf max-vids { + type uint16; + config false; + description + "The maximum number of VIDs supported."; + reference + "12.10.1.3 of IEEE Std 802.1Q-2022"; + } + leaf override-default-pvid { + type boolean; + default "false"; + config false; + description + "Indicates if the default PVID can be overridden, and its + egress status (VLAN-tagged or untagged) on each port."; + reference + "12.10.1.3 of IEEE Std 802.1Q-2022"; + } + leaf protocol-template { + if-feature "port-and-protocol-based-vlan"; + type dot1qtypes:protocol-frame-format-type; + config false; + description + "The data-link encapsulation format or the + detagged_frame_type in a Protocol Template"; + reference + "12.10.1.7 of IEEE Std 802.1Q-2022"; + } + leaf max-msti { + type uint16; + config false; + description + "The maximum number of MSTIs supported within an MST + region (i.e., the number of spanning tree instances that + can be supported in addition to the CIST), for MST + Bridges. For SST Bridges, this parameter may be either + omitted or reported as 0."; + reference + "12.10.1.7 of IEEE Std 802.1Q-2022"; + } + list vlan { + key "vid"; + description + "List of VLAN related configuration nodes associated with + the Bridge."; + reference + "12.10.2 of IEEE Std 802.1Q-2022"; + leaf vid { + type dot1qtypes:vlan-index-type; + description + "The VLAN identifier to which this entry applies."; + reference + "12.10.2 of IEEE Std 802.1Q-2022"; + } + leaf name { + type dot1qtypes:name-type; + description + "A text string of up to 32 characters of locally + determined significance."; + reference + "12.10.2 of IEEE Std 802.1Q-2022"; + } + leaf-list untagged-ports { + type if:interface-ref; + config false; + description + "The set of ports in the untagged set for this VID."; + reference + "12.10.2.1.3, 8.8.2 of IEEE Std 802.1Q-2022"; + } + leaf-list egress-ports { + type if:interface-ref; + config false; + description + "The set of egress ports in the member set for this VID."; + reference + "12.10.2.1.3, 8.8.10 of IEEE Std 802.1Q-2022"; + } + } + list protocol-group-database { + if-feature "port-and-protocol-based-vlan"; + key "db-index"; + description + "List of the protocol group database entries."; + reference + "12.10.1.7, 6.12.3 of IEEE Std 802.1Q-2022"; + leaf db-index { + type uint16; + description + "The protocol group database index."; + } + leaf frame-format-type { + type dot1qtypes:protocol-frame-format-type; + description + "The data-link encapsulation format or the + detagged_frame_type in a Protocol Template"; + reference + "12.10.1.7 of IEEE Std 802.1Q-2022"; + } + choice frame-format { + description + "The identification of the protocol above the data-link + layer in a Protocol Template. Depending on the frame + type, the octet string will have one of the following + values: - For ethernet, rfc1042 and snap8021H, this is + the 16-bit (2-octet) IEEE 802 Clause 9.3 EtherType + field. - For snapOther, this is the 40-bit (5-octet) + PID. - For llcOther, this is the 2-octet IEEE 802.2 Link + Service Access Point (LSAP) pair: first octet for + Destination Service Access Point (DSAP) and second octet + for Source Service Access Point (SSAP)."; + reference + "12.10.1.7 of IEEE Std 802.1Q-2022"; + case ethernet-rfc1042-snap8021H { + when + "frame-format-type = 'Ethernet' or "+ + "frame-format-type = 'rfc1042' or frame-format-type "+ + "= 'snap8021H'" { + description + "Applies to Ethernet, RFC 1042, SNAP 8021H frame + formats."; + } + description + "Identifier used if Ethenet, RFC1042, or SNAP 8021H."; + leaf ethertype { + type dot1qtypes:ethertype-type; + description + "Format containing the 16-bit IEEE 802 EtherType + field."; + reference + "9.3 of IEEE Std 802-2014"; + } + } + case snap-other { + when + "frame-format-type = 'snapOther'" { + description + "Applies to Snap Other frame formats."; + } + description + "Identifier used if SNAP other."; + leaf protocol-id { + type string { + pattern "[0-9a-fA-F]{2}(-[0-9a-fA-F]{2}){4}"; + } + description + "Format containing the 40-bit protocol identifier + (PID). The canonical representation uses uppercase + characters."; + reference + "12.10.1.7.1 of IEEE Std 802.1Q-2022"; + } + } + case llc-other { + when + "frame-format-type = 'llcOther'" { + description + "Applies to LLC Other frame formats"; + } + description + "Identifier used if LLC other."; + container dsap-ssap-pairs { + description + "A pair of ISO/IEC 8802-2 DSAP and SSAP address + field values, for matching frame formats of + LLC_Other."; + leaf llc-address { + type string { + pattern "[0-9a-fA-F]{2}-[0-9a-fA-F]{2}"; + } + description + "A pair of ISO/IEC 8802-2 DSAP and SSAP address + field values, for matching frame formats of + LLC_Other. The canonical representation uses + uppercase characters."; + reference + "12.10.1.7.1 of IEEE Std 802.1Q-2022"; + } + } + } + } + leaf group-id { + type uint32; + description + "Designates a group of protocols in the Protocol Group + Database."; + reference + "6.12.2 of IEEE Std 802.1Q-2022"; + } + } + list vid-to-fid-allocation { + key "vids"; + description + "This list allows inquiries about VID to FID allocations."; + leaf vids { + type dot1qtypes:vid-range-type; + description + "Range of VLAN identifiers."; + reference + "12.10.3 of IEEE Std 802.1Q-2022"; + } + leaf fid { + type uint32; + config false; + description + "The Filtering Database used by a set of VIDs."; + reference + "12.10.3 of IEEE Std 802.1Q-2022"; + } + leaf allocation-type { + type enumeration { + enum undefined { + description + "No allocation defined."; + } + enum fixed { + description + "A fixed allocation to FID is defined."; + } + enum dynamic { + description + "A dynamic allocation to FID is defined."; + } + } + config false; + description + "The type of allocation used"; + reference + "12.10.3 of IEEE Std 802.1Q-2022"; + } + } + list fid-to-vid-allocation { + key "fid"; + description + "The FID to VID allocations managed object models + operations that inquire about FID to VID allocations."; + leaf fid { + type uint32; + description + "The Filtering Database used by a set of VIDs."; + reference + "12.10.3 of IEEE Std 802.1Q-2022"; + } + leaf allocation-type { + type enumeration { + enum undefined { + description + "No allocation defined."; + } + enum fixed { + description + "A fixed allocation to FID is defined."; + } + enum dynamic { + description + "A dynamic allocation to FID is defined."; + } + } + config false; + description + "The type of allocation used"; + reference + "12.10.3 of IEEE Std 802.1Q-2022"; + } + leaf-list vid { + type dot1qtypes:vlan-index-type; + config false; + description + "The VLAN identifier to which this entry applies."; + reference + "12.7.7 of IEEE Std 802.1Q-2022"; + } + } + list vid-to-fid { + key "vid"; + description + "Fixed allocation of a VID to an FID. The underlying + system will ensure that subsequent commands that make + changes to the VID to FID mapping can override previous + associations."; + reference + "12.10.3.4, 12.10.3.5 of IEEE Std 802.1Q-2022"; + leaf vid { + type dot1qtypes:vlan-index-type; + description + "A list of VLAN identifier associated with a given + database identifier (i.e., FID)."; + reference + "12.7.7 of IEEE Std 802.1Q-2022"; + } + leaf fid { + type uint32; + description + "The Filtering Database used by this VLAN"; + reference + "12.10.3 of IEEE Std 802.1Q-2022"; + } + } + } + container bridge-mst { + when + "not(derived-from-or-self(../../bridge-type, "+ + "'two-port-mac-relay-bridge'))" { + description + "Applies to non TPMRs."; + } + description + "The Bridge MST container models configuration information + that modify, or inquire about, the overall configuration of + the Bridges MST resources."; + reference + "12.12 of IEEE Std 802.1Q-2022"; + leaf-list mstid { + type dot1qtypes:mstid-type; + description + "The list of MSTID values that are currently supported by + the Bridge"; + } + list fid-to-mstid { + key "fid"; + description + "The FID to MSTID allocation table."; + reference + "12.12.2 of IEEE Std 802.1Q-2022"; + leaf fid { + type uint32; + description + "The Filtering Database identifier."; + reference + "12.12.2 of IEEE Std 802.1Q-2022"; + } + leaf mstid { + type dot1qtypes:mstid-type; + description + "The MSTID to which the FID is to be allocated."; + reference + "12.12.2 of IEEE Std 802.1Q-2022"; + } + } + list fid-to-mstid-allocation { + key "fids"; + description + "The FID to MSTID allocation table"; + leaf fids { + type dot1qtypes:vid-range-type; + description + "Range of FIDs."; + reference + "12.12.2 of IEEE Std 802.1Q-2022"; + } + leaf mstid { + type dot1qtypes:mstid-type; + description + "The MSTID to which the FID is allocated."; + reference + "12.12.2 of IEEE Std 802.1Q-2022"; + } + } + } + } + } + } + augment "/if:interfaces/if:interface" { + when + "derived-from-or-self(if:type,'ianaif:bridge') or "+ + "derived-from-or-self(if:type,'ianaif:ethernetCsmacd') or "+ + "derived-from-or-self(if:type,'ianaif:ieee8023adLag') or "+ + "derived-from-or-self(if:type,'ianaif:ilan')" { + description + "Applies when a Bridge interface."; + } + description + "Augment the interface model with the Bridge Port"; + container bridge-port { + description + "Bridge Port is an extension of the IETF Interfaces model + (RFC7223)."; + leaf bridge-name { + type leafref { + path "/dot1q:bridges/dot1q:bridge/dot1q:name"; + } + // mandatory true; yang 1.1 only + description + "Used to reference configured Bridge node."; + } + leaf component-name { + type leafref { + path "/dot1q:bridges/dot1q:bridge[dot1q:name=current()/../bridge-name]/dot1q:component/dot1q:name"; + } + // mandatory true; yang 1.1 only + description + "Used to reference configured Component node."; + } + leaf port-type { + type identityref { + base type-of-port; + } + description + "The port type. Indicates the capabilities of this port."; + reference + "12.4.2.1 of IEEE Std 802.1Q-2022"; + } + leaf pvid { + when "/dot1q:bridges/dot1q:bridge[dot1q:name=current()"+ + "/../dot1q:bridge-name]/dot1q:component[name=current()"+ + "/../dot1q:component-name]/dot1q:type != 'dot1q:d-bridge-component'" { + description + "Applies to non TPMRs"; + } + type dot1qtypes:vlan-index-type; + default "1"; + description + "The primary (default) VID assigned to a specific Bridge Port."; + reference + "12.10.1, 5.4, item m) of IEEE Std 802.1Q-2022"; + } + leaf default-priority { + type dot1qtypes:priority-type; + default "0"; + description + "The default priority assigned to a specific Bridge Port."; + reference + "12.6.2 of IEEE Std 802.1Q-2022"; + } + container priority-regeneration { + description + "The Priority Regeneration Table parameters associated with a + specific Bridge Port. A list of Regenerated User Priorities + for each received priority on each port of a Bridge. The + regenerated priority value may be used to index the Traffic + Class Table for each input port. This only has effect on media + that support native priority. The default values for + Regenerated User Priorities are the same as the User + Priorities"; + reference + "12.6.2, 6.9.4 of IEEE Std 802.1Q-2022"; + uses dot1qtypes:priority-regeneration-table-grouping; + } + leaf pcp-selection { + type dot1qtypes:pcp-selection-type; + default "8P0D"; + description + "The Priority Code Point selection assigned to a specific + Bridge Port. This object identifies the rows in the PCP + encoding and decoding tables that are used to remark frames on + this port if this remarking is enabled"; + reference + "12.6.2, 6.9.3 of IEEE Std 802.1Q-2022"; + } + container pcp-decoding-table { + description + "The Priority Code Point Decoding Table parameters associated + with a specific Bridge Port."; + uses dot1qtypes:pcp-decoding-table-grouping; + } + container pcp-encoding-table { + description + "The Priority Code Point Encoding Table parameters associated + with a specific Bridge Port."; + uses dot1qtypes:pcp-encoding-table-grouping; + } + leaf use-dei { + type boolean; + default "false"; + description + "The Drop Eligible Indicator. If it is set to True, then the + drop_eligible parameter is encoded in the DEI of transmitted + frames, and the drop_eligible parameter shall be true(1) for a + received frame if the DEI is set in the VLAN tag or the + Priority Code Point Decoding Table indicates drop_eligible + True for the received PCP value. If this parameter is False, + the DEI shall be transmitted as zero and ignored on receipt."; + reference + "12.6.2, 6.9.3 of IEEE Std 802.1Q-2022"; + } + leaf drop-encoding { + type boolean; + default "false"; + description + "The Drop Encoding parameter. If a Bridge supports encoding or + decoding of drop_eligible from the PCP field of a VLAN tag + (6.7.3) on any of its Ports, then it shall implement a Boolean + parameter Require Drop Encoding on each of its Ports with + default value False. If Require Drop Encoding is True and the + Bridge Port cannot encode particular priorities with + drop_eligible, then frames queued with those priorities and + drop_eligible True shall be discarded and not transmitted."; + reference + "12.6.2, 6.9.3 of IEEE Std 802.1Q-2022"; + } + leaf service-access-priority-selection { + type boolean; + default "false"; + description + "The Service Access Priority selection. Indication of whether + the Service Access Priority Selection function is supported on + the Customer Bridge Port to request priority handling of the + frame from a Port-based service interface."; + reference + "12.6.2, 6.13 of IEEE Std 802.1Q-2022"; + } + container service-access-priority { + description + "The Service Access Priority table parameters. A table that + contains information about the Service Access Priority + Selection function for a Provider Bridge. The use of this + table enables a mechanism for a Customer Bridge attached to a + Provider Bridged Network to request priority handling of + frames."; + reference + "12.6.2, 6.13.1 of IEEE Std 802.1Q-2022"; + uses dot1qtypes:service-access-priority-table-grouping; + } + container traffic-class { + description + "The Traffic Class table parameters. A table mapping evaluated + priority to Traffic Class, for forwarding by the Bridge"; + reference + "12.6.3, 8.6.6 of IEEE Std 802.1Q-2022"; + uses dot1qtypes:traffic-class-table-grouping; + } + container transmission-selection-algorithm-table { + description + "The Transmission Selection Algorithm Table for a given Port + assigns, for each traffic class that the Port supports, the + transmission selection algorithm that is to be used to select + frames for transmission from the corresponding queue. + Transmission Selection Algorithm Tables may be managed, and + allow the identification of vendor-specific transmission + selection algorithms. The transmission selection algorithms + are identified in the Transmission Selection Algorithm Table + by means of integer identifiers."; + reference + "12.20.2, 8.6.8 of IEEE Std 802.1Q-2022"; + uses dot1qtypes:transmission-selection-table-grouping; + } + leaf acceptable-frame { + when "/dot1q:bridges/dot1q:bridge[dot1q:name=current()"+ + "/../dot1q:bridge-name]/dot1q:component[name=current()"+ + "/../dot1q:component-name]/dot1q:type != 'dot1q:d-bridge-component'" { + description + "Applies to non TPMRs"; + } + type enumeration { + enum admit-only-VLAN-tagged-frames { + description + "Admit only VLAN-tagged frames."; + } + enum admit-only-untagged-and-priority-tagged { + description + "Admit only untagged and priority-tagged frames."; + } + enum admit-all-frames { + description + "Admit all frames."; + } + } + default "admit-all-frames"; + description + "To configure the Acceptable Frame Types parameter associated + with one or more Ports"; + reference + "12.10.1.3, 6.9 of IEEE Std 802.1Q-2022"; + } + leaf enable-ingress-filtering { + when "/dot1q:bridges/dot1q:bridge[dot1q:name=current()"+ + "/../dot1q:bridge-name]/dot1q:component[name=current()"+ + "/../dot1q:component-name]/dot1q:type != 'dot1q:d-bridge-component'" { + description + "Applies to non TPMRs"; + } + type boolean; + default "false"; + description + "To enable the Ingress Filtering feature associated with one + or more Ports."; + reference + "12.10.1.4, 8.6.2 of IEEE Std 802.1Q-2022"; + } + leaf enable-restricted-vlan-registration { + when "/dot1q:bridges/dot1q:bridge[dot1q:name=current()"+ + "/../dot1q:bridge-name]/dot1q:component[name=current()"+ + "/../dot1q:component-name]/dot1q:type != 'dot1q:d-bridge-component'" { + description + "Applies to non TPMRs"; + } + type boolean; + default "false"; + description + "To enable the Restricted VLAN Registration associated with + one or more Ports."; + reference + "11.2.3.2.3, 12.10.1.6 of IEEE Std 802.1Q-2022"; + } + leaf enable-vid-translation-table { + when "/dot1q:bridges/dot1q:bridge[dot1q:name=current()"+ + "/../dot1q:bridge-name]/dot1q:component[name=current()"+ + "/../dot1q:component-name]/dot1q:type != 'dot1q:d-bridge-component'" { + description + "Applies to non TPMRs"; + } + type boolean; + default "false"; + description + "To enable VID Translation table associated with a Bridge + Port. This is not applicable to Bridge Ports that do no + support a VID Translation Table."; + reference + "12.10.1.8, 6.9 of IEEE Std 802.1Q-2022"; + } + leaf enable-egress-vid-translation-table { + when "/dot1q:bridges/dot1q:bridge[dot1q:name=current()"+ + "/../dot1q:bridge-name]/dot1q:component[name=current()"+ + "/../dot1q:component-name]/dot1q:type != 'dot1q:d-bridge-component'" { + description + "Applies to non TPMRs"; + } + type boolean; + default "false"; + description + "To enable Egress VID Translation table associated with a + Bridge Port. This is not applicable to Ports that do not + support an Egress VID Translation table."; + reference + "12.10.1.8, 6.9 of IEEE Std 802.1Q-2022"; + } + list protocol-group-vid-set { + when "/dot1q:bridges/dot1q:bridge[dot1q:name=current()"+ + "/../dot1q:bridge-name]/dot1q:component[name=current()"+ + "/../dot1q:component-name]/dot1q:type != 'dot1q:d-bridge-component'" { + description + "Applies to non TPMRs"; + } + if-feature "port-and-protocol-based-vlan"; + key "group-id"; + description + "The list of VID values associated with the Protocol Group + Identifier for this port."; + reference + "12.10.1.1.3 of IEEE Std 802.1Q-2022"; + leaf group-id { + type uint32; + description + "The protocol group identifier"; + reference + "12.10.1.7 of IEEE Std 802.1Q-2022"; + } + leaf-list vid { + type dot1qtypes:vlanid; + description + "The VLAN identifier to which this entry applies."; + reference + "12.10.2 of IEEE Std 802.1Q-2022"; + } + } + leaf admin-point-to-point { + type enumeration { + enum force-true { + value 1; + description + "Indicates that this port should always be treated as if + it is connected to a point-to-point link."; + } + enum force-false { + value 2; + description + "Indicates that this port should be treated as having a + shared media connection."; + } + enum auto { + value 3; + description + "Indicates that this port is considered to have a + point-to-point link if it is an Aggregator and all of its + members are aggregatable, or if the MAC entity is + configured for full duplex operation, either through + auto-negotiation or by management means."; + } + } + description + "For a port running spanning tree, this object represents the + administrative point-to-point status of the LAN segment + attached to this port, using the enumeration values of IEEE + Std 802.1AC. A value of forceTrue(1) indicates that this port + should always be treated as if it is connected to a + point-to-point link. A value of forceFalse(2) indicates that + this port should be treated as having a shared media + connection. A value of auto(3) indicates that this port is + considered to have a point-to-point link if it is an + Aggregator and all of its members are aggregatable, or if the + MAC entity is configured for full duplex operation, either + through auto-negotiation or by management means. Manipulating + this object changes the underlying adminPointToPointMAC."; + reference + "12.4.2, 6.8.2 of IEEE Std 802.1Q-2022"; + } + leaf protocol-based-vlan-classification { + when "/dot1q:bridges/dot1q:bridge[dot1q:name=current()"+ + "/../dot1q:bridge-name]/dot1q:component[name=current()"+ + "/../dot1q:component-name]/dot1q:type != 'dot1q:d-bridge-component'" { + description + "Applies to non TPMRs"; + } + if-feature "port-and-protocol-based-vlan"; + type boolean; + config false; + description + "A boolean indication indicating if Port-and-Protocol-based + VLAN classification is supported on a given Port."; + reference + "5.4.1.2 of IEEE Std 802.1Q-2022"; + } + leaf max-vid-set-entries { + when "/dot1q:bridges/dot1q:bridge[dot1q:name=current()"+ + "/../dot1q:bridge-name]/dot1q:component[name=current()"+ + "/../dot1q:component-name]/dot1q:type != 'dot1q:d-bridge-component'" { + description + "Applies to non TPMRs"; + } + if-feature "port-and-protocol-based-vlan"; + type uint16; + config false; + description + "The maximum number of entries supported in the VID set on a + given Port."; + reference + "12.10.1.1.3 of IEEE Std 802.1Q-2022"; + } + leaf port-number { + type dot1qtypes:port-number-type; + config false; + description + "An integer that uniquely identifies a Bridge Port."; + reference + "Item i) in 12.3, 17.3.2.2 of IEEE Std 802.1Q-2022"; + } + leaf address { + type ieee:mac-address; + config false; + description + "The specific MAC address of the individual MAC Entity + associated with the Port."; + reference + "12.4.2, Item a) in 12.4.2.1.1.3 of IEEE Std 802.1Q-2022"; + } + leaf capabilities { + type bits { + bit tagging { + position 0; + description + "Supports 802.1Q VLAN tagging of frames and MVRP."; + } + bit configurable-acceptable-frame-type { + position 1; + description + "Allows modified values of acceptable frame types"; + } + bit ingress-filtering { + position 2; + description + "Supports the discarding of any frame received on a Port + whose VLAN classification does not include that Port in + its member set."; + } + } + config false; + description + "The feature capabilities associated with port. Indicates the + parts of IEEE 802.1Q that are optional on a per-port basis, + that are implemented by this device, and that are manageable."; + reference + "Item c) in 12.10.1.1.3, 12.4.2 of IEEE Std 802.1Q-2022"; + } + leaf type-capabilties { + type bits { + bit customer-vlan-port { + position 0; + description + "Indicates the port can be a C-TAG aware port of an + enterprise VLAN aware Bridge"; + } + bit provider-network-port { + position 1; + description + "Indicates the port can be an S-TAG aware port of a + Provider Bridge or Backbone Edge Bridge used for + connections within a PBN or PBBN."; + } + bit customer-network-port { + position 2; + description + "Indicates the port can be an S-TAG aware port of a + Provider Bridge or Backbone Edge Bridge used for + connections to the exterior of a PBN or PBBN."; + } + bit customer-edge-port { + position 3; + description + "Indicates the port can be a C-TAG aware port of a + Provider Bridge used for connections to the exterior of a + PBN or PBBN."; + } + bit customer-backbone-port { + position 4; + description + "Indicates the port can be a I-TAG aware port of a + Backbone Edge Bridge's B-component."; + } + bit virtual-instance-port { + position 5; + description + "Indicates the port can be a virtual S-TAG aware port + within a Backbone Edge Bridge's I-component which is + responsible for handling S-tagged traffic for a specific + backbone service instance."; + } + bit d-bridge-port { + position 6; + description + "Indicates the port can be a VLAN-unaware member of an + 802.1Q Bridge."; + } + bit remote-customer-access-port { + position 7; + description + "Indicates the port can be an S-TAG aware port of a + Provider Bridge capable of providing Remote Customer + Service Interfaces."; + } + bit station-facing-bridge-port { + position 8; + description + "Indicates the station-facing Bridge Port in a EVB Bridge."; + } + bit uplink-access-port { + position 9; + description + "Indicates the uplink access port in an EVB Bridge or EVB + station."; + } + bit uplink-relay-port { + position 10; + description + "Indicates the uplink relay port in an EVB station."; + } + } + config false; + description + "The type of feature capabilities supported with port. + Indicates the capabilities of this port."; + reference + "12.4.2 of IEEE Std 802.1Q-2022"; + } + leaf external { + type boolean; + config false; + description + "A boolean indicating whether the port is external. A value of + True means the port is external. A value of False means the + port is internal."; + reference + "12.4.2 of IEEE Std 802.1Q-2022"; + } + leaf oper-point-to-point { + type boolean; + config false; + description + "For a port running spanning tree, this object represents the + operational point-to-point status of the LAN segment attached + to this port. It indicates whether a port is considered to + have a point-to-point connection. + + If admin-point-to-point is set to auto(2), then the value of + oper-point-to-point is determined in accordance with the + specific procedures defined for the MAC entity concerned, as + defined in IEEE Std 802.1AC. + + The value is determined dynamically; that is, it is + re-evaluated whenever the value of admin-point-to-point + changes, and whenever the specific procedures defined for the + MAC entity evaluate a change in its point-to-point status."; + reference + "IEEE Std 802.1AC;" + + "12.4.2 of IEEE Std 802.1Q-2022"; + } + leaf media-dependent-overhead { + type uint8; + units "octets"; + config false; + description + "The portMediaDependentOverhead parameter provides the number + of additional octets for media-dependent framing. The overhead + includes all octets prior the first octet of the Destination + Address field and all octets after the last octet of the frame + check sequence."; + reference + "12.4.2 of IEEE Std 802.1Q-2022"; + } + container statistics { + config false; + description + "Container of operational state node information associated + with the bridge port."; + uses dot1qtypes:bridge-port-statistics-grouping; + leaf discard-on-ingress-filtering { + when "/dot1q:bridges/dot1q:bridge[dot1q:name=current()"+ + "/../../dot1q:bridge-name]/dot1q:component[name=current()"+ + "/../../dot1q:component-name]/dot1q:type != 'dot1q:d-bridge-component'" { + description + "Applies to non TPMRs"; + } + if-feature "ingress-filtering"; + type yang:counter64; + description + "The number of frames that were discarded as a result of + Ingress Filtering being enabled. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of 'discontinuity-time'."; + reference + "12.6.1.1.3 of IEEE Std 802.1Q-2022"; + } + } + list vid-translations { + when "/dot1q:bridges/dot1q:bridge[dot1q:name=current()"+ + "/../dot1q:bridge-name]/dot1q:component[name=current()"+ + "/../dot1q:component-name]/dot1q:type != 'dot1q:d-bridge-component'" { + description + "Applies to non TPMRs"; + } + key "local-vid"; + description + "To configure the VID Translation Table (6.9) associated with + a Port. This object is not applicable to Ports that do not + support a VID Translation Table. The default configuration of + the table has the value of the Relay VID equal to the value of + the Local VID. If no local VID is configured, then it is + assumed that the relay VID is the same value as the local VID. + + If the port supports an Egress VID translation table, the VID + Translation Configuration object configures the Local VID to + Relay VID mapping on ingress only. If an Egress VID + translation is not supported, the VID Translation + Configuration object defines a single bidirectional mapping. + In this case, the Bridge should not allow multiple keys + ('local-vid') mapped to the same 'relay-vid' value."; + leaf local-vid { + type dot1qtypes:vlanid; + description + "The Local VID after translation received at the ISS or + EISS."; + reference + "12.10.1.8, 6.9 of IEEE Std 802.1Q-2022"; + } + leaf relay-vid { + type dot1qtypes:vlanid; + description + "The Relay VID received before translation received at ISS + or EISS."; + reference + "12.10.1.8, 6.9 of IEEE Std 802.1Q-2022"; + } + } + list egress-vid-translations { + when "/dot1q:bridges/dot1q:bridge[dot1q:name=current()"+ + "/../dot1q:bridge-name]/dot1q:component[name=current()"+ + "/../dot1q:component-name]/dot1q:type != 'dot1q:d-bridge-component'" { + description + "Applies to non TPMRs"; + } + key "relay-vid"; + description + "To configure the Egress VID Translation Table (6.9) + associated with a Port. This object is not applicable to Ports + that do not support an Egress VID Translation Table. The + default configuration of the table has the value of the Local + VID equal to the value of the Relay VID. If no Relay VID is + configured, then it is assumed that the local VID is the same + value as the relay VID."; + leaf relay-vid { + type dot1qtypes:vlanid; + description + "The Relay VID received before translation received at ISS + or EISS."; + reference + "12.10.1.9, 6.9 of IEEE Std 802.1Q-2022"; + } + leaf local-vid { + type dot1qtypes:vlanid; + description + "The Local VID after translation received at the ISS or + EISS."; + reference + "12.10.1.9, 6.9 of IEEE Std 802.1Q-2022"; + } + } + } + } +} \ No newline at end of file -- GitLab From bbf8daa8d1b5241b2e9f29b61bcd758e428bf314 Mon Sep 17 00:00:00 2001 From: busii Date: Tue, 14 Jun 2022 07:34:22 +0000 Subject: [PATCH 6/8] Upload New File --- json-examples/ieee802-dot1q-pb.yang | 221 ++++++++++++++++++++++++++++ 1 file changed, 221 insertions(+) create mode 100644 json-examples/ieee802-dot1q-pb.yang diff --git a/json-examples/ieee802-dot1q-pb.yang b/json-examples/ieee802-dot1q-pb.yang new file mode 100644 index 0000000..e25b7b0 --- /dev/null +++ b/json-examples/ieee802-dot1q-pb.yang @@ -0,0 +1,221 @@ +module ieee802-dot1q-pb { + yang-version "1.1"; + namespace urn:ieee:std:802.1Q:yang:ieee802-dot1q-pb; + prefix dot1q-pb; + import ieee802-dot1q-bridge { + prefix dot1q; + } + import ieee802-dot1q-types { + prefix dot1qtypes; + } + import ietf-interfaces { + prefix if; + } + organization + "IEEE 802.1 Working Group"; + contact + "WG-URL: http://ieee802.org/1/ + WG-EMail: stds-802-1-l@ieee.org + + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway, NJ 08854 + USA + + E-mail: stds-802-1-chairs@ieee.org"; + description + "This YANG module describes the bridge configuration model for + Provider Bridges. + + Copyright (C) IEEE (2022). + + This version of this YANG module is part of IEEE Std 802.1Q; see the + standard itself for full legal notices."; + revision 2022-05-06 { + description + "Update to rebase on Qcw"; + reference + "IEEE Std 802.1Q-2022, Bridges and Bridged Networks."; + } + revision 2022-01-19 { + description + "Published as part of IEEE Std 802.1Q-2022."; + reference + "IEEE Std 802.1Q-2022, Bridges and Bridged Networks."; + } + revision 2020-06-04 { + description + "Published as part of IEEE Std 802.1Qcx-2020. Second version."; + reference + "IEEE Std 802.1Qcx-2020, Bridges and Bridged Networks - YANG Data + Model for Connectivity Fault Management."; + } + revision 2018-03-07 { + description + "Published as part of IEEE Std 802.1Q-2018. Initial version."; + reference + "IEEE Std 802.1Q-2018, Bridges and Bridged Networks."; + } + augment "/if:interfaces/if:interface/dot1q:bridge-port" { + description + "Augment the interface model with 802.1Q Bridge Port configuration + specific nodes."; + leaf svid { + type dot1qtypes:vlanid; + description + "Service VLAN identifier."; + reference + "12.13.2.1 of IEEE Std 802.1Q-2022"; + } + list cvid-registration { + when "/dot1q:bridges/dot1q:bridge[dot1q:name=current()" + + "/../dot1q:bridge-name]/dot1q:component[dot1q:name=current()" + + "/../dot1q:component-name]/dot1q:type = 'dot1q:c-vlan-component' and "+ + "../dot1q:port-type = 'dot1q:customer-edge-port'" { + description + "Applies when the component associated with this interface is + a C-VLAN component and the port-type is a customer edge port."; + } + key "cvid"; + description + "The C-VID Registration Table, provides a mapping between a + C-VID and the service instance represented by an S-VID selected + for that C-VLAN. This table provides the equivalent + functionality of + 1) Configuring the PVID of the internal CNP on the S-VLAN + component + 2) Adding the corresponding PEP on the C-VLAN component to + the member set of the C-VLAN + 3) Adding the PEP and/or CEP to the untagged set of the + C-VLAN (if it is desired that frames forwarded to that + port are transmitted untagged for this C-VLAN)."; + leaf cvid { + type dot1qtypes:vlanid; + description + "Customer VLAN identifiers associated with this bridge port."; + reference + "12.13.2.1 of IEEE Std 802.1Q-2022"; + } + leaf svid { + type dot1qtypes:vlanid; + description + "Service VLAN identifier."; + reference + "12.13.2.1 of IEEE Std 802.1Q-2022"; + } + leaf untagged-pep { + type boolean; + default "true"; + description + "A boolean indicating frames for this C-VLAN should be + forwarded untagged through the Provider Edge Port."; + reference + "12.13.2.1 of IEEE Std 802.1Q-2022"; + } + leaf untagged-cep { + type boolean; + default "true"; + description + "A boolean indicating frames for this C-VLAN should be + forwarded untagged through the Customer Edge Port."; + reference + "12.13.2.1 of IEEE Std 802.1Q-2022"; + } + } + list service-priority-regeneration { + when "/dot1q:bridges/dot1q:bridge[dot1q:name=current() " + + "/../dot1q:bridge-name]/dot1q:component[dot1q:name=current() " + + "/../dot1q:component-name]/dot1q:type = 'dot1q:c-vlan-component' and "+ + "../dot1q:port-type = 'dot1q:customer-edge-port'" { + description + "Applies when the component associated with this interface is + a C-VLAN component and the port-type is a customer edge port."; + } + key "svid"; + description + "The Service Priority Regeneration Table, which provides the + Priority Regeneration Table (12.6.2) for each internal CNP + connected to the C-VLAN component associated with the CEP."; + leaf svid { + type dot1qtypes:vlanid; + description + "Service VLAN identifier."; + reference + "12.13.2.6 of IEEE Std 802.1Q-2022"; + } + container priority-regeneration { + description + "Contains Service Priority Regeneration table nodal + information."; + reference + "12.13.2.6 of IEEE Std 802.1Q-2022"; + uses dot1qtypes:priority-regeneration-table-grouping; + } + } + list rcap-internal-interface { + when "/dot1q:bridges/dot1q:bridge[dot1q:name=current() " + + "/../dot1q:bridge-name]/dot1q:component[dot1q:name=current() " + + "/../dot1q:component-name]/dot1q:type = 'dot1q:s-vlan-component' and "+ + "../dot1q:port-type = 'dot1q:remote-customer-access-port'" { + description + "Applies when the component associated with this interface is + a C-VLAN component and the port-type is a customer edge port."; + } + key "external-svid"; + description + "Designating an external port as an RCAP automatically creates a + Port-mapping S-VLAN component associated with that port. This + Port-mapping S-VLAN component includes one internal PNP."; + leaf external-svid { + type dot1qtypes:vlanid; + description + "External Service VLAN identifier."; + reference + "12.13.3.2 of IEEE Std 802.1Q-2022"; + } + leaf internal-port-number { + type dot1qtypes:port-number-type; + description + "The number of the RCAP."; + reference + "12.13.3.2 of IEEE Std 802.1Q-2022"; + } + leaf internal-svid { + type dot1qtypes:vlanid; + description + "Internal Service VLAN Identifier (not applicable for a + C-tagged RCSI)."; + reference + "12.13.3.2 of IEEE Std 802.1Q-2022"; + } + leaf internal-interface-type { + type enumeration { + enum port-based-rcsi { + description + "Port-based RCSI"; + } + enum c-tagged-rcsi { + description + "C-tagged RCSI"; + } + enum pnp { + description + "Provider Network Port"; + } + enum discard { + description + "Discard (external S-VID is not associated with an + internal port)."; + } + } + description + "A value indicating the type of internal interface associated + with the external S-VID."; + reference + "12.13.3.2 of IEEE Std 802.1Q-2022"; + } + } + } +} \ No newline at end of file -- GitLab From 7336a1e9ec0d711c02afa95957bd5a891df9f7f4 Mon Sep 17 00:00:00 2001 From: busii Date: Tue, 12 Jul 2022 07:59:37 +0000 Subject: [PATCH 7/8] Add ieee802-dot1q-types.yang --- json-examples/ieee802-dot1q-types.yang | 980 +++++++++++++++++++++++++ 1 file changed, 980 insertions(+) create mode 100644 json-examples/ieee802-dot1q-types.yang diff --git a/json-examples/ieee802-dot1q-types.yang b/json-examples/ieee802-dot1q-types.yang new file mode 100644 index 0000000..cfc46ed --- /dev/null +++ b/json-examples/ieee802-dot1q-types.yang @@ -0,0 +1,980 @@ +module ieee802-dot1q-types { + namespace urn:ieee:std:802.1Q:yang:ieee802-dot1q-types; + prefix dot1q-types; + import ietf-yang-types { + prefix yang; + } + organization + "IEEE 802.1 Working Group"; + contact + "WG-URL: http://ieee802.org/1/ + WG-EMail: stds-802-1-l@ieee.org + + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway, NJ 08854 + USA + + E-mail: stds-802-1-chairs@ieee.org"; + description + "Common types used within dot1Q-bridge modules. + + Copyright (C) IEEE (2022). + + This version of this YANG module is part of IEEE Std 802.1Q; see the + standard itself for full legal notices."; + revision 2022-01-19 { + description + "Published as part of IEEE Std 802.1Q-2022."; + reference + "IEEE Std 802.1Q-2022, Bridges and Bridged Networks."; + } + revision 2020-06-04 { + description + "Published as part of IEEE Std 802.1Qcx-2020. Second version."; + reference + "IEEE Std 802.1Qcx-2020, Bridges and Bridged Networks - YANG Data + Model for Connectivity Fault Management."; + } + revision 2018-03-07 { + description + "Published as part of IEEE Std 802.1Q-2018. Initial version."; + reference + "IEEE Std 802.1Q-2018, Bridges and Bridged Networks."; + } + identity dot1q-vlan-type { + description + "Base identity from which all 802.1Q VLAN tag types are derived + from."; + } + identity c-vlan { + base dot1q-vlan-type; + description + "An 802.1Q Customer VLAN, using the 81-00 EtherType"; + reference + "5.5 of IEEE Std 802.1Q-2022"; + } + identity s-vlan { + base dot1q-vlan-type; + description + "An 802.1Q Service VLAN, using the 88-A8 EtherType originally + introduced in 802.1ad, and incorporated into 802.1Q (2011)"; + reference + "5.6 of IEEE Std 802.1Q-2022"; + } + identity transmission-selection-algorithm { + description + "Specify the transmission selection algorithms of IEEE Std + 802.1Q-2022 Table 8-6"; + } + identity strict-priority { + base transmission-selection-algorithm; + description + "Indicates the strict priority transmission selection algorithm."; + reference + "Table 8-6 of IEEE Std 802.1Q-2022"; + } + identity credit-based-shaper { + base transmission-selection-algorithm; + description + "Indicates the credit based shaper transmission selection + algorithm."; + reference + "Table 8-6 of IEEE Std 802.1Q-2022"; + } + identity enhanced-transmission-selection { + base transmission-selection-algorithm; + description + "Indicates the enhanced transmission selection algorithm."; + reference + "Table 8-6 of IEEE Std 802.1Q-2022"; + } + identity asynchronous-traffic-shaping { + base transmission-selection-algorithm; + description + "Indicates the asynchronous transmission selection algorithm."; + reference + "Table 8-6 of IEEE Std 802.1Q-2022"; + } + identity vendor-specific { + base transmission-selection-algorithm; + description + "Indicates a vendor specific transmission selection algorithm."; + reference + "Table 8-6 of IEEE Std 802.1Q-2022"; + } + typedef name-type { + type string { + length "0..32"; + } + description + "A text string of up to 32 characters, of locally determined + significance."; + } + typedef port-number-type { + type uint32 { + range "1..4095"; + } + description + "The port number of the Bridge port for which this entry contains + Bridge management information."; + } + typedef priority-type { + type uint8 { + range "0..7"; + } + description + "A range of priorities from 0 to 7 (inclusive). The Priority Code + Point (PCP) is a 3-bit field that refers to the class of service + associated with an 802.1Q VLAN tagged frame. The field specifies a + priority value between 0 and 7, these values can be used by + quality of service (QoS) to prioritize different classes of + traffic."; + } + typedef vid-range-type { + type string { + pattern + "([1-9]"+ + "[0-9]{0,3}"+ + "(-[1-9][0-9]{0,3})?"+ + "(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)"; + } + description + "A list of VLAN Ids, or non overlapping VLAN ranges, in ascending + order, between 1 and 4094. + + This type is used to match an ordered list of VLAN Ids, or + contiguous ranges of VLAN Ids. Valid VLAN Ids must be in the range + 1 to 4094, and included in the list in non overlapping ascending + order. + + For example: 1,10-100,250,500-1000"; + } + typedef vlanid { + type uint16 { + range "1..4094"; + } + description + "The vlanid type uniquely identifies a VLAN. This is the 12-bit + VLAN-ID used in the VLAN Tag header. The range is defined by the + referenced specification. This type is in the value set and its + semantics equivalent to the VlanId textual convention of the + SMIv2."; + } + typedef vlan-index-type { + type uint32 { + range "1..4094 | 4096..4294967295"; + } + description + "A value used to index per-VLAN tables. Values of 0 and 4095 are + not permitted. The range of valid VLAN indices. If the value is + greater than 4095, then it represents a VLAN with scope local to + the particular agent, i.e., one without a global VLAN-ID assigned + to it. Such VLANs are outside the scope of IEEE 802.1Q, but it is + convenient to be able to manage them in the same way using this + YANG module."; + reference + "9.6 of IEEE Std 802.1Q-2022"; + } + typedef mstid-type { + type uint32 { + range "1..4094"; + } + description + "In an MSTP Bridge, an MSTID, i.e., a value used to identify a + spanning tree (or MST) instance"; + reference + "13.8 of IEEE Std 802.1Q-2022"; + } + typedef pcp-selection-type { + type enumeration { + enum 8P0D { + description + "8 priorities, 0 drop eligible"; + } + enum 7P1D { + description + "7 priorities, 1 drop eligible"; + } + enum 6P2D { + description + "6 priorities, 2 drop eligible"; + } + enum 5P3D { + description + "5 priorities, 3 drop eligible"; + } + } + description + "Priority Code Point selection types."; + reference + "12.6.2.5.3, 6.9.3 of IEEE Std 802.1Q-2022"; + } + typedef protocol-frame-format-type { + type enumeration { + enum Ethernet { + description + "Ethernet frame format"; + } + enum rfc1042 { + description + "RFC 1042 frame format"; + } + enum snap8021H { + description + "SNAP 802.1H frame format"; + } + enum snapOther { + description + "Other SNAP frame format"; + } + enum llcOther { + description + "Other LLC frame format"; + } + } + description + "A value representing the frame format to be matched."; + reference + "12.10.1.7.1 of IEEE Std 802.1Q-2022"; + } + typedef ethertype-type { + type string { + pattern "[0-9a-fA-F]{2}-[0-9a-fA-F]{2}"; + } + description + "The EtherType value represented in the canonical order defined by + IEEE 802. The canonical representation uses uppercase characters."; + reference + "9.2 of IEEE Std 802-2014"; + } + typedef dot1q-tag-type { + type identityref { + base dot1q-vlan-type; + } + description + "Identifies a specific 802.1Q tag type"; + reference + "9.5 IEEE Std 802.1Q-2022"; + } + typedef traffic-class-type { + type uint8 { + range "0..7"; + } + description + "This is the numerical value associated with a traffic class in a + Bridge. Larger values are associated with higher priority traffic + classes."; + reference + "3.273 of IEEE Std 802.1Q-2022"; + } + grouping dot1q-tag-classifier-grouping { + description + "A grouping which represents an 802.1Q VLAN, matching both the + EtherType and a single VLAN Id."; + leaf tag-type { + type dot1q-tag-type; + mandatory true; + description + "VLAN type"; + } + leaf vlan-id { + type vlanid; + mandatory true; + description + "VLAN Id"; + } + } + grouping dot1q-tag-or-any-classifier-grouping { + description + "A grouping which represents an 802.1Q VLAN, matching both the + EtherType and a single VLAN Id or 'any' to match on any VLAN Id."; + leaf tag-type { + type dot1q-tag-type; + mandatory true; + description + "VLAN type"; + } + leaf vlan-id { + type union { + type vlanid; + type enumeration { + enum any { + value 4095; + description + "Matches 'any' VLAN in the range 1 to 4094 that is not + matched by a more specific VLAN Id match"; + } + } + } + mandatory true; + description + "VLAN Id or any"; + } + } + grouping dot1q-tag-ranges-classifier-grouping { + description + "A grouping which represents an 802.1Q VLAN that matches a range + of VLAN Ids."; + leaf tag-type { + type dot1q-tag-type; + mandatory true; + description + "VLAN type"; + } + leaf vlan-ids { + type vid-range-type; + mandatory true; + description + "VLAN Ids"; + } + } + grouping dot1q-tag-ranges-or-any-classifier-grouping { + description + "A grouping which represents an 802.1Q VLAN, matching both the + EtherType and a single VLAN Id, ordered list of ranges, or 'any' + to match on any VLAN Id."; + leaf tag-type { + type dot1q-tag-type; + mandatory true; + description + "VLAN type"; + } + leaf vlan-id { + type union { + type vid-range-type; + type enumeration { + enum any { + value 4095; + description + "Matches 'any' VLAN in the range 1 to 4094."; + } + } + } + mandatory true; + description + "VLAN Ids or any"; + } + } + grouping priority-regeneration-table-grouping { + description + "The priority regeneration table provides the ability to map + incoming priority values on a per-Port basis, under management + control."; + reference + "6.9.4 of IEEE Std 802.1Q-2022"; + leaf priority0 { + type priority-type; + default "0"; + description + "Priority 0"; + reference + "12.6.2.3, 6.9.4 of IEEE Std 802.1Q-2022"; + } + leaf priority1 { + type priority-type; + default "1"; + description + "Priority 1"; + reference + "12.6.2.3, 6.9.4 of IEEE Std 802.1Q-2022"; + } + leaf priority2 { + type priority-type; + default "2"; + description + "Priority 2"; + reference + "12.6.2.3, 6.9.4 of IEEE Std 802.1Q-2022"; + } + leaf priority3 { + type priority-type; + default "3"; + description + "Priority 3"; + reference + "12.6.2.3, 6.9.4 of IEEE Std 802.1Q-2022"; + } + leaf priority4 { + type priority-type; + default "4"; + description + "Priority 4"; + reference + "12.6.2.3, 6.9.4 of IEEE Std 802.1Q-2022"; + } + leaf priority5 { + type priority-type; + default "5"; + description + "Priority 5"; + reference + "12.6.2.3, 6.9.4 of IEEE Std 802.1Q-2022"; + } + leaf priority6 { + type priority-type; + default "6"; + description + "Priority 6"; + reference + "12.6.2.3, 6.9.4 of IEEE Std 802.1Q-2022"; + } + leaf priority7 { + type priority-type; + default "7"; + description + "Priority 7"; + reference + "12.6.2.3, 6.9.4 of IEEE Std 802.1Q-2022"; + } + } + grouping pcp-decoding-table-grouping { + description + "The Priority Code Point decoding table enables the decoding of + the priority and drop-eligible parameters from the PCP."; + reference + "6.9.3 of IEEE Std 802.1Q-2022"; + list pcp-decoding-map { + key "pcp"; + description + "This map associates the priority code point field found in the + VLAN to a priority and drop eligible value based upon the + priority code point selection type."; + leaf pcp { + type pcp-selection-type; + description + "The priority code point selection type."; + reference + "12.6.2.7, 6.9.3 of IEEE Std 802.1Q-2022"; + } + list priority-map { + key "priority-code-point"; + description + "This map associated a priority code point value to priority + and drop eligible parameters."; + leaf priority-code-point { + type priority-type; + description + "Priority associated with the pcp."; + reference + "12.6.2.7, 6.9.3 of IEEE Std 802.1Q-2022"; + } + leaf priority { + type priority-type; + description + "Priority associated with the pcp."; + reference + "12.6.2.7, 6.9.3 of IEEE Std 802.1Q-2022"; + } + leaf drop-eligible { + type boolean; + description + "Drop eligible value for pcp"; + reference + "12.6.2.7, 6.9.3 of IEEE Std 802.1Q-2022"; + } + } + } + } + grouping pcp-encoding-table-grouping { + description + "The Priority Code Point encoding table encodes the priority and + drop-eligible parameters in the PCP field of the VLAN tag."; + reference + "12.6.2.9, 6.9.3 of IEEE Std 802.1Q-2022"; + list pcp-encoding-map { + key "pcp"; + description + "This map associated the priority and drop-eligible parameters + to the priority used to encode the PCP of the VLAN based upon + the priority code point selection type."; + leaf pcp { + type pcp-selection-type; + description + "The priority code point selection type."; + reference + "12.6.2.7, 6.9.3 of IEEE Std 802.1Q-2022"; + } + list priority-map { + key "priority dei"; + description + "This map associated the priority and drop-eligible parameters + to the priority code point field of the VLAN tag."; + leaf priority { + type priority-type; + description + "Priority associated with the pcp."; + reference + "12.6.2.7, 6.9.3 of IEEE Std 802.1Q-2022"; + } + leaf dei { + type boolean; + description + "The drop eligible value."; + reference + "12.6.2, 8.6.6 of IEEE Std 802.1Q-2022"; + } + leaf priority-code-point { + type priority-type; + description + "PCP value for priority when DEI value"; + reference + "12.6.2.9, 6.9.3 of IEEE Std 802.1Q-2022"; + } + } + } + } + grouping service-access-priority-table-grouping { + description + "The Service Access Priority Table associates a received priority + with a serice access priority."; + reference + "12.6.2.17, 6.13.1 of IEEE Std 802.1Q-2022"; + leaf priority0 { + type priority-type; + default "0"; + description + "Service access priority value for priority 0"; + reference + "12.6.2.17, 6.13.1 of IEEE Std 802.1Q-2022"; + } + leaf priority1 { + type priority-type; + default "1"; + description + "Service access priority value for priority 1"; + reference + "12.6.2.17, 6.13.1 of IEEE Std 802.1Q-2022"; + } + leaf priority2 { + type priority-type; + default "2"; + description + "Service access priority value for priority 2"; + reference + "12.6.2.17, 6.13.1 of IEEE Std 802.1Q-2022"; + } + leaf priority3 { + type priority-type; + default "3"; + description + "Service access priority value for priority 3"; + reference + "12.6.2.17, 6.13.1 of IEEE Std 802.1Q-2022"; + } + leaf priority4 { + type priority-type; + default "4"; + description + "Service access priority value for priority 4"; + reference + "12.6.2.17, 6.13.1 of IEEE Std 802.1Q-2022"; + } + leaf priority5 { + type priority-type; + default "5"; + description + "Service access priority value for priority 5"; + reference + "12.6.2.17, 6.13.1 of IEEE Std 802.1Q-2022"; + } + leaf priority6 { + type priority-type; + default "6"; + description + "Service access priority value for priority 6"; + reference + "12.6.2.17, 6.13.1 of IEEE Std 802.1Q-2022"; + } + leaf priority7 { + type priority-type; + default "7"; + description + "Service access priority value for priority 7"; + reference + "12.6.2.17, 6.13.1 of IEEE Std 802.1Q-2022"; + } + } + grouping traffic-class-table-grouping { + description + "The Traffic Class Table models the operations that can be + performed on, or inquire about, the current contents of the + Traffic Class Table (8.6.6) for a given Port."; + reference + "12.6.3, 8.6.6 of IEEE Std 802.1Q-2022"; + list traffic-class-map { + key "priority"; + description + "The priority index into the traffic class table."; + leaf priority { + type priority-type; + description + "The priority of the traffic class entry."; + reference + "8.6.6 of IEEE Std 802.1Q-2022"; + } + list available-traffic-class { + key "num-traffic-class"; + description + "The traffic class index associated with a given priority + within the traffic class table."; + reference + "8.6.6 of IEEE Std 802.1Q-2022"; + leaf num-traffic-class { + type uint8 { + range "1..8"; + } + description + "The available number of traffic classes."; + reference + "8.6.6 of IEEE Std 802.1Q-2022"; + } + leaf traffic-class { + type traffic-class-type; + description + "The traffic class index associated with a given traffic + class entry."; + reference + "8.6.6 of IEEE Std 802.1Q-2022"; + } + } + } + } + grouping transmission-selection-table-grouping { + description + "The Transmission Selection Algorithm Table models the operations + that can be performed on, or inquire about, the current contents + of the Transmission Selection Algorithm Table (12.20.2) for a + given Port."; + reference + "12.20.2, 8.6.8 of IEEE Std 802.1Q-2022"; + list transmission-selection-algorithm-map { + key "traffic-class"; + description + "The traffic class to index into the transmission selection + table."; + leaf traffic-class { + type traffic-class-type; + description + "The traffic class of the entry."; + reference + "8.6.6 of IEEE Std 802.1Q-2022"; + } + leaf transmission-selection-algorithm { + type identityref { + base dot1q-types:transmission-selection-algorithm; + } + description + "Transmission selection algorithm"; + reference + "8.6.8, Table 8-6 of IEEE Std 802.1Q-2022"; + } + } + } + grouping port-map-grouping { + description + "A set of control indicators, one for each Port. A Port Map, + containing a control element for each outbound Port"; + reference + "8.8.1, 8.8.2 of IEEE Std 802.1Q-2022"; + list port-map { + key "port-ref"; + description + "The list of entries composing the port map."; + leaf port-ref { + type port-number-type; + description + "The interface port reference associated with this map."; + reference + "8.8.1 of IEEE Std 802.1Q-2022"; + } + choice map-type { + description + "Type of port map"; + container static-filtering-entries { + description + "Static filtering entries attributes."; + leaf control-element { + type enumeration { + enum forward { + description + "Forwarded, independently of any dynamic filtering + information held by the FDB."; + } + enum filter { + description + "Filtered, independently of any dynamic filtering + information."; + } + enum forward-filter { + description + "Forwarded or filtered on the basis of dynamic + filtering information, or on the basis of the default + Group filtering behavior for the outbound Port (8.8.6) + if no dynamic filtering information is present + specifically for the MAC address."; + } + } + description + "containing a control element for each outbound Port, + specifying that a frame with a destination MAC address, + and in the case of VLAN Bridge components, VID that meets + this specification."; + reference + "8.8.1 of IEEE Std 802.1Q-2022"; + } + leaf connection-identifier { + type port-number-type; + description + "A Port MAP may contain a connection identifier (8.8.12) + for each outbound port. The connection identifier may be + associated with the Bridge Port value maintained in a + Dynamic Filtering Entry of the FDB for Bridge Ports."; + reference + "8.8.1, 8.8.12 of IEEE Std 802.1Q-2022"; + } + } + container static-vlan-registration-entries { + description + "Static VLAN registration entries."; + leaf registrar-admin-control { + type enumeration { + enum fixed-new-ignored { + description + "Registration Fixed (New ignored)."; + } + enum fixed-new-propagated { + description + "Registration Fixed (New propagated."; + } + enum forbidden { + description + "Registration Forbidden."; + } + enum normal { + description + "Normal Registration."; + } + } + description + "The Registrar Administrative Control values for MVRP and + MIRP for the VID."; + reference + "8.8.2 of IEEE Std 802.1Q-2022"; + } + leaf vlan-transmitted { + type enumeration { + enum tagged { + description + "VLAN-tagged"; + } + enum untagged { + description + "VLAN-untagged"; + } + } + description + "Whether frames are to be VLAN-tagged or untagged when + transmitted."; + reference + "8.8.2 of IEEE Std 802.1Q-2022"; + } + } + container mac-address-registration-entries { + description + "MAC address registration entries attributes."; + leaf control-element { + type enumeration { + enum registered { + description + "Forwarded, independently of any dynamic filtering + information held by the FDB."; + } + enum not-registered { + description + "Filtered, independently of any dynamic filtering + information."; + } + } + description + "containing a control element for each outbound Port, + specifying that a frame with a destination MAC address, + and in the case of VLAN Bridge components, VID that meets + this specification."; + reference + "8.8.4 of IEEE Std 802.1Q-2022"; + } + } + container dynamic-vlan-registration-entries { + description + "Dynamic VLAN registration entries attributes."; + leaf control-element { + type enumeration { + enum registered { + description + "Forwarded, independently of any dynamic filtering + information held by the FDB."; + } + } + description + "containing a control element for each outbound Port, + specifying that a frame with a destination MAC address, + and in the case of VLAN Bridge components, VID that meets + this specification."; + reference + "8.8.5 of IEEE Std 802.1Q-2022"; + } + } + container dynamic-reservation-entries { + description + "Dynamic reservation entries attributes."; + leaf control-element { + type enumeration { + enum forward { + description + "Forwarded, independently of any dynamic filtering + information held by the FDB."; + } + enum filter { + description + "Filtered, independently of any dynamic filtering + information."; + } + } + description + "Containing a control element for each outbound Port, + specifying that a frame with a destination MAC address, + and in the case of VLAN Bridge components, VID that meets + this specification."; + reference + "8.8.7 of IEEE Std 802.1Q-2022"; + } + } + container dynamic-filtering-entries { + description + "Dynamic filtering entries attributes."; + leaf control-element { + type enumeration { + enum forward { + description + "Forwarded, independently of any dynamic filtering + information held by the FDB."; + } + } + description + "Containing a control element for each outbound Port, + specifying that a frame with a destination MAC address, + and in the case of VLAN Bridge components, VID that meets + this specification."; + reference + "8.8.3 of IEEE Std 802.1Q-2022"; + } + } + } + } + } + grouping bridge-port-statistics-grouping { + description + "Grouping of bridge port statistics."; + reference + "12.6.1.1.3 of IEEE Std 802.1Q-2022"; + leaf delay-exceeded-discards { + type yang:counter64; + description + "The number of frames discarded by this port due to excessive + transit delay through the Bridge. It is incremented by both + transparent and source route Bridges."; + reference + "12.6.1.1.3, 8.6.6 of IEEE Std 802.1Q-2022"; + } + leaf mtu-exceeded-discards { + type yang:counter64; + description + "The number of frames discarded by this port due to an excessive + size. It is incremented by both transparent and source route + Bridges."; + reference + "Item g) in 12.6.1.1.3 of IEEE Std 802.1Q-2022"; + } + leaf frame-rx { + type yang:counter64; + description + "The number of frames that have been received by this port from + its segment. Note that a frame received on the interface + corresponding to this port is only counted by this object if and + only if it is for a protocol being processed by the local + bridging function, including Bridge management frames."; + reference + "12.6.1.1.3 of IEEE Std 802.1Q-2022"; + } + leaf octets-rx { + type yang:counter64; + description + "The total number of octets in all valid frames received + (including BPDUs, frames addressed to the Bridge as an end + station, and frames that were submitted to the Forwarding + Process)."; + reference + "12.6.1.1.3 of IEEE Std 802.1Q-2022"; + } + leaf frame-tx { + type yang:counter64; + description + "The number of frames that have been transmitted by this port to + its segment. Note that a frame transmitted on the interface + corresponding to this port is only counted by this object if and + only if it is for a protocol being processed by the local + bridging function, including Bridge management frames."; + } + leaf octets-tx { + type yang:counter64; + description + "The total number of octets that have been transmitted by this + port to its segment."; + } + leaf discard-inbound { + type yang:counter64; + description + "Count of received valid frames that were discarded (i.e., + filtered) by the Forwarding Process."; + reference + "12.6.1.1.3 of IEEE Std 802.1Q-2022"; + } + leaf forward-outbound { + type yang:counter64; + description + "The number of frames forwarded to the associated MAC Entity + (8.5)."; + reference + "12.6.1.1.3 of IEEE Std 802.1Q-2022"; + } + leaf discard-lack-of-buffers { + type yang:counter64; + description + "The count of frames that were to be transmitted through the + associated Port but were discarded due to lack of buffers."; + reference + "12.6.1.1.3 of IEEE Std 802.1Q-2022"; + } + leaf discard-transit-delay-exceeded { + type yang:counter64; + description + "The number of frames discarded by this port due to excessive + transit delay through the Bridge. It is incremented by both + transparent and source route Bridges."; + reference + "12.6.1.1.3 of IEEE Std 802.1Q-2022"; + } + leaf discard-on-error { + type yang:counter64; + description + "The number of frames that were to be forwarded on the + associated MAC but could not be transmitted (e.g., frame would + be too large, 6.5.8)."; + reference + "12.6.1.1.3 of IEEE Std 802.1Q-2022"; + } + } +} -- GitLab From 6ca5f39627cfc18f5bc33ecd7259ed44b84619e2 Mon Sep 17 00:00:00 2001 From: busii Date: Tue, 12 Jul 2022 08:00:17 +0000 Subject: [PATCH 8/8] Add ieee802-types.yang --- json-examples/ieee802-types.yang | 287 +++++++++++++++++++++++++++++++ 1 file changed, 287 insertions(+) create mode 100644 json-examples/ieee802-types.yang diff --git a/json-examples/ieee802-types.yang b/json-examples/ieee802-types.yang new file mode 100644 index 0000000..f7bce99 --- /dev/null +++ b/json-examples/ieee802-types.yang @@ -0,0 +1,287 @@ +module ieee802-types { + namespace urn:ieee:std:802.1Q:yang:ieee802-types; + prefix ieee; + organization + "IEEE 802.1 Working Group"; + contact + "WG-URL: http://ieee802.org/1/ + WG-EMail: stds-802-1-l@ieee.org + + Contact: IEEE 802.1 Working Group Chair + Postal: C/O IEEE 802.1 Working Group + IEEE Standards Association + 445 Hoes Lane + Piscataway, NJ 08854 + USA + + E-mail: stds-802-1-chairs@ieee.org"; + description + "This module contains a collection of generally useful derived data + types for IEEE YANG models. + + Copyright (C) IEEE (2022). + + This version of this YANG module is part of IEEE Std 802.1Q; see the + standard itself for full legal notices."; + revision 2022-05-19 { + description + "Published as part of IEEE Std 802.1Q-2022."; + reference + "IEEE Std 802.1Q-2022, Bridges and Bridged Networks."; + } + revision 2021-08-25 { + description + "Published as part of IEEE Std 802.1ABcu"; + reference + "IEEE Std 802.1AB-2016"; + } + revision 2020-06-04 { + description + "Published as part of IEEE Std 802.1Qcx-2020. Second version."; + reference + "IEEE Std 802.1Qcx-2020, Bridges and Bridged Networks - YANG Data + Model for Connectivity Fault Management."; + } + revision 2018-03-07 { + description + "Published as part of IEEE Std 802.1Q-2018. Initial version."; + reference + "IEEE Std 802.1Q-2018, Bridges and Bridged Networks."; + } + typedef mac-address { + type string { + pattern "[0-9a-fA-F]{2}(-[0-9a-fA-F]{2}){5}"; + } + description + "The mac-address type represents a MAC address in the canonical + format and hexadecimal format specified by IEEE Std 802. The + hexidecimal representation uses uppercase characters."; + reference + "3.1, 8.1 of IEEE Std 802-2014"; + } + typedef chassis-id-subtype-type { + type enumeration { + enum chassis-component { + value 1; + description + "Represents a chassis identifier based on the value of + entPhysicalAlias object (defined in IETF RFC 2737) for a + chassis component (i.e., an entPhysicalClass value of + chassis(3))"; + } + enum interface-alias { + value 2; + description + "Represents a chassis identifier based on the value of ifAlias + object (defined in IETF RFC 2863) for an interface on the + containing chassis."; + } + enum port-component { + value 3; + description + "Represents a chassis identifier based on the value of + entPhysicalAlias object (defined in IETF RFC 2737) for a port + or backplane component (i.e., entPhysicalClass value of + port(10) or backplane(4)), within the containing chassis."; + } + enum mac-address { + value 4; + description + "Represents a chassis identifier based on the value of a + unicast source address (encoded in network byte order and IEEE + 802.3 canonical bit order), of a port on the containing + chassis as defined in IEEE Std 802-2001."; + } + enum network-address { + value 5; + description + "Represents a chassis identifier based on a network address, + associated with a particular chassis. The encoded address is + actually composed of two fields. The first field is a single + octet, representing the IANA AddressFamilyNumbers value for + the specific address type, and the second field is the network + address value."; + } + enum interface-name { + value 6; + description + "Represents a chassis identifier based on the value of ifName + object (defined in IETF RFC 2863) for an interface on the + containing chassis."; + } + enum local { + value 7; + description + "Represents a chassis identifier based on a locally defined + value."; + } + } + description + "The source of a chassis identifier."; + reference + "IEEE Std 802-2014;" + + "IETF RFC 2737;" + + "IETF RFC 2863"; + } + typedef chassis-id-type { + type string { + length "1..255"; + } + description + "The format of a chassis identifier string. Objects of this type + are always used with an associated lldp-chassis-is-subtype object, + which identifies the format of the particular lldp-chassis-id + object instance. + + If the associated lldp-chassis-id-subtype object has a value of + chassis-component, then the octet string identifies a particular + instance of the entPhysicalAlias object (defined in IETF RFC 2737) + for a chassis component (i.e., an entPhysicalClass value of + chassis(3)). + + If the associated lldp-chassis-id-subtype object has a value of + interface-alias, then the octet string identifies a particular + instance of the ifAlias object (defined in IETF RFC 2863) for an + interface on the containing chassis. If the particular ifAlias + object does not contain any values, another chassis identifier + type should be used. + + If the associated lldp-chassis-id-subtype object has a value of + port-component, then the octet string identifies a particular + instance of the entPhysicalAlias object (defined in IETF RFC 2737) + for a port or backplane component within the containing chassis. + + If the associated lldp-chassis-id-subtype object has a value of + mac-address, then this string identifies a particular unicast + source address (encoded in network byte order and IEEE 802.3 + canonical bit order), of a port on the containing chassis as + defined in IEEE Std 802-2001. + + If the associated lldp-chassis-id-subtype object has a value of + network-address, then this string identifies a particular network + address, encoded in network byte order, associated with one or + more ports on the containing chassis. The first octet contains the + IANA Address Family Numbers enumeration value for the specific + address type, and octets 2 through N contain the network address + value in network byte order. + + If the associated lldp-chassis-id-subtype object has a value of + interface-name, then the octet string identifies a particular + instance of the ifName object (defined in IETF RFC 2863) for an + interface on the containing chassis. If the particular ifName + object does not contain any values, another chassis identifier + type should be used. + + If the associated lldp-chassis-id-subtype object has a value of + local, then this string identifies a locally assigned Chassis ID."; + reference + "IEEE Std 802-2014;" + + "IETF RFC 2737;" + + "IETF RFC 2863"; + } + typedef port-id-subtype-type { + type enumeration { + enum interface-alias { + value 1; + description + "Represents a port identifier based on the ifAlias MIB object, + defined in IETF RFC 2863."; + } + enum port-component { + value 2; + description + "Represents a port identifier based on the value of + entPhysicalAlias (defined in IETF RFC 2737) for a port + component (i.e., entPhysicalClass value of port(10)), within + the containing chassis."; + } + enum mac-address { + value 3; + description + "Represents a port identifier based on a unicast source + address (encoded in network byte order and IEEE 802.3 + canonical bit order), which has been detected by the agent and + associated with a particular port (IEEE Std 802-2001)."; + } + enum network-address { + value 4; + description + "Represents a port identifier based on a network address, + detected by the agent and associated with a particular port."; + } + enum interface-name { + value 5; + description + "Represents a port identifier based on the ifName MIB object, + defined in IETF RFC 2863."; + } + enum agent-circuit-id { + value 6; + description + "Represents a port identifier based on the agent-local + identifier of the circuit (defined in RFC 3046), detected by + the agent and associated with a particular port."; + } + enum local { + value 7; + description + "Represents a port identifier based on a value locally + assigned."; + } + } + description + "The source of a particular type of port identifier used in the + LLDP YANG module."; + } + typedef port-id-type { + type string { + length "1..255"; + } + description + "The format of a port identifier string. Objects of this type are + always used with an associated port-id-subtype object, which + identifies the format of the particular lldp-port-id object + instance. + + If the associated port-id-subtype object has a value of + interface-alias, then the octet string identifies a particular + instance of the ifAlias object (defined in IETF RFC 2863). If the + particular ifAlias object does not contain any values, another + port identifier type should be used. + + If the associated port-id-subtype object has a value of + port-component, then the octet string identifies a particular + instance of the entPhysicalAlias object (defined in IETF RFC 2737) + for a port or backplane component. + + If the associated port-id-subtype object has a value of + mac-address, then this string identifies a particular unicast + source address (encoded in network byte order and IEEE 802.3 + canonical bit order) associated with the port (IEEE Std 802-2001). + + If the associated port-id-subtype object has a value of + network-address, then this string identifies a network address + associated with the port. The first octet contains the IANA + AddressFamilyNumbers enumeration value for the specific address + type, and octets 2 through N contain the networkAddress address + value in network byte order. + + If the associated port-id-subtype object has a value of + interface-name, then the octet string identifies a particular + instance of the ifName object (defined in IETF RFC 2863). If the + particular ifName object does not contain any values, another port + identifier type should be used. + + If the associated port-id-subtype object has a value of + agent-circuit-id, then this string identifies a agent-local + identifier of the circuit (defined in RFC 3046). + + If the associated port-id-subtype object has a value of + local, then this string identifies a locally assigned port ID."; + reference + "IEEE Std 802-2014;" + + "IETF RFC 2737;" + + "IETF RFC 2863," + + "IETF RFC 3046"; + } +} -- GitLab