SONiC 系统管理 35
ABNF与YANG
这里是一个ABNF.json转换成YANG的例子,这里的NO-NSW-PACL-V4是ACL Tabel的名字,Rule_20的描述,ABNF和YANG的对应关系不是很明显
ABNF:
"ACL_RULE": {
"NO-NSW-PACL-V4|Rule_20": {
"PACKET_ACTION": "FORWARD",
"DST_IP": "10.186.72.0/26",
"SRC_IP": "10.176.0.0/15",
"PRIORITY": "999980",
"IP_TYPE": "IPv6"
},
更多ACL Table的例子,这里的描述是ACL Table中3各表项的内容:
"ACL_RULE": {
"DATAACL|DEFAULT_RULE": {
"PRIORITY": "1",
"PACKET_ACTION": "DROP",
"ETHER_TYPE": "2048"
},
"DATAACL|RULE_1": {
"PRIORITY": "9999",
"PACKET_ACTION": "DROP",
"SRC_IP": "10.0.0.2/32"
},
"DATAACL|RULE_2": {
"PRIORITY": "9998",
"PACKET_ACTION": "DROP",
"DST_IP": "192.168.0.16/32"
},
}
YANG:
choice ip_prefix {
case ip4_prefix {
when "boolean(IP_TYPE[.='ANY' or .='IP' or .='IPV4' or .='IPV4ANY' or .='ARP'])";
leaf SRC_IP {
type inet:ipv4-prefix;
}
leaf DST_IP {
type inet:ipv4-prefix;
}
}
case ip6_prefix {
when "boolean(IP_TYPE[.='ANY' or .='IP' or .='IPV6' or .='IPV6ANY'])";
leaf SRC_IPV6 {
type inet:ipv6-prefix;
}
leaf DST_IPV6 {
type inet:ipv6-prefix;
}
}
}