MCPcopy Create free account
hub / github.com/FDio/vpp / BFD

Class BFD

test/bfd.py:119–162  ·  view source on GitHub ↗

BFD protocol layer for scapy

Source from the content-addressed store, hash-verified

117
118
119class BFD(Packet):
120 """BFD protocol layer for scapy"""
121
122 udp_dport = 3784 #: BFD destination port per RFC 5881
123 udp_dport_echo = 3785 # : BFD destination port for ECHO per RFC 5881
124 udp_sport_min = 49152 #: BFD source port min value per RFC 5881
125 udp_sport_max = 65535 #: BFD source port max value per RFC 5881
126 bfd_pkt_len = 24 # : length of BFD pkt without authentication section
127 sha1_auth_len = 28 # : length of authentication section if SHA1 used
128
129 name = "BFD"
130
131 fields_desc = [
132 BitField("version", 1, 3),
133 BitEnumField("diag", 0, 5, BFDDiagCode.desc_dict),
134 BitEnumField("state", 0, 2, BFDState.desc_dict),
135 FlagsField("flags", 0, 6, ["M", "D", "A", "C", "F", "P"]),
136 XByteField("detect_mult", 0),
137 BitField("length", bfd_pkt_len, 8),
138 BitField("my_discriminator", 0, 32),
139 BitField("your_discriminator", 0, 32),
140 BitField("desired_min_tx_interval", 0, 32),
141 BitField("required_min_rx_interval", 0, 32),
142 BitField("required_min_echo_rx_interval", 0, 32),
143 ConditionalField(
144 BitEnumField("auth_type", 0, 8, BFDAuthType.desc_dict), bfd_is_auth_used
145 ),
146 ConditionalField(BitField("auth_len", 0, 8), bfd_is_auth_used),
147 ConditionalField(BitField("auth_key_id", 0, 8), bfd_is_auth_used),
148 ConditionalField(BitField("auth_reserved", 0, 8), bfd_is_md5_or_sha1_used),
149 ConditionalField(BitField("auth_seq_num", 0, 32), bfd_is_md5_or_sha1_used),
150 MultipleTypeField(
151 [
152 (StrField("auth_key_hash", "0" * 16), bfd_is_md5_used),
153 (StrField("auth_key_hash", "0" * 20), bfd_is_sha1_used),
154 ],
155 StrField("auth_key_hash", ""),
156 ),
157 ]
158
159 def mysummary(self):
160 return self.sprintf(
161 "BFD(my_disc=%BFD.my_discriminator%, your_disc=%BFD.your_discriminator%)"
162 )
163
164
165# glue the BFD packet class to scapy parser

Callers 1

create_packetMethod · 0.90

Calls

no outgoing calls

Tested by 1

create_packetMethod · 0.72