item(IPV4_PREFIX_TKN) // IPV4 network prefixes
item(IPV6_TKN) // IPV6 prefixes
item(IPV6_PREFIX_TKN) // IPV6 network prefixes
+ item(MAC_TKN) // MAC address
+ item(MAC_PREFIX_TKN) // MAC address with mask
/* plumbing types */
item(FORK_TKN) item(JOIN_TKN) item(START_TKN)
def combine(self, other):
if type(self) == type(other):
return other
- if type(other) in [Prefix4Handler, Prefix6Handler, PrefixGenHandler]:
+ if isinstance(other, PrefixBase):
return PrefixGenHandler(None)
return StringHandler(None)
deref = '&'
argtype = 'const struct prefix_ipv6 *'
decl = Template('struct prefix_ipv6 $varname = { };')
code = Template('_fail = !str2prefix_ipv6(argv[_i]->arg, &$varname);')
+class PrefixEthHandler(PrefixBase):
+ argtype = 'struct prefix_eth *'
+ decl = Template('struct prefix_eth $varname = { };')
+ code = Template('_fail = !str2prefix_eth(argv[_i]->arg, &$varname);')
class PrefixGenHandler(PrefixBase):
argtype = 'const struct prefix *'
decl = Template('struct prefix $varname = { };')
'IPV4_PREFIX_TKN': Prefix4Handler,
'IPV6_TKN': IP6Handler,
'IPV6_PREFIX_TKN': Prefix6Handler,
+ 'MAC_TKN': PrefixEthHandler,
+ 'MAC_PREFIX_TKN': PrefixEthHandler,
}
# core template invoked for each occurence of DEFPY.