我正在使用scapy的bgp层,我想知道是否有可能在scapy Fields类中定义一些常量值。
例如,类BGPPathAttr
包含一个字段type_code
,它指的是一个包含NEXT_HOP
和RFC 4271中定义的幻数3之间关联的映射。我想通过创建一个看起来像BGPPathAttr.type_code.NEXT_HOP
的语句来访问值3
谢谢
scapy代码./scapy/scapy/contrib/bgp.py
的摘录
path_attributes = {
0: "Reserved",
1: "ORIGIN", # RFC 4271
2: "AS_PATH", # RFC 4271
3: "NEXT_HOP", # RFC 4271
[...]
}
class BGPPathAttr(Packet):
name = "BGPPathAttr"
fields_desc = [
ByteEnumField("type_code", 0, path_attributes)
]
嗨,
您可以使用s2i
属性(和i2s
进行反向转换):
>>> BGPPathAttr.type_code.s2i['NEXT_HOP']
3
>>> BGPPathAttr.type_code.i2s[3]
'NEXT_HOP'