如何从fields_desc获取ByteEnumField值?

2024-10-03 15:24:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用scapy的bgp层,我想知道是否有可能在scapy Fields类中定义一些常量值。在

例如,类BGPPathAttr包含一个字段type_code,该字段引用包含{}与rfc4271中定义的幻数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)
   ]

Tags: pathfields定义rfctypecodeattributesscapy
1条回答
网友
1楼 · 发布于 2024-10-03 15:24:09

在 嗨

您可以使用s2i属性(和i2s进行反向翻译):

>>> BGPPathAttr.type_code.s2i['NEXT_HOP']
3
>>> BGPPathAttr.type_code.i2s[3]
'NEXT_HOP'

相关问题 更多 >