MCPcopy Create free account
hub / github.com/secdev/scapy / VTP

Class VTP

scapy/contrib/vtp.py:150–187  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

148
149
150class VTP(Packet):
151 name = "VTP"
152 fields_desc = [
153 ByteField("ver", 2),
154 ByteEnumField("code", 1, _VTP_Types),
155 ConditionalField(ByteField("followers", 1),
156 lambda pkt:pkt.code == 1),
157 ConditionalField(ByteField("seq", 1),
158 lambda pkt:pkt.code == 2),
159 ConditionalField(ByteField("reserved", 0),
160 lambda pkt:pkt.code == 3),
161 ByteField("domnamelen", None),
162 StrFixedLenField("domname", "manbearpig", 32),
163 ConditionalField(SignedIntField("rev", 0),
164 lambda pkt:pkt.code == 1 or
165 pkt.code == 2),
166 # updater identity
167 ConditionalField(IPField("uid", "192.168.0.1"),
168 lambda pkt:pkt.code == 1),
169 ConditionalField(VTPTimeStampField("timestamp", '930301000000'),
170 lambda pkt:pkt.code == 1),
171 ConditionalField(StrFixedLenField("md5", b"\x00" * 16, 16),
172 lambda pkt:pkt.code == 1),
173 ConditionalField(
174 PacketListField("vlaninfo", [], VTPVlanInfo),
175 lambda pkt: pkt.code == 2),
176 ConditionalField(ShortField("startvalue", 0),
177 lambda pkt:pkt.code == 3)
178 ]
179
180 def post_build(self, p, pay):
181 if self.domnamelen is None:
182 domnamelen = len(self.domname.strip(b"\x00"))
183 p = p[:3] + chb(domnamelen & 0xff) + p[4:]
184
185 p += pay
186
187 return p
188
189
190bind_layers(SNAP, VTP, code=0x2003)

Callers

nothing calls this directly

Calls 9

ByteFieldClass · 0.90
ByteEnumFieldClass · 0.90
ConditionalFieldClass · 0.90
StrFixedLenFieldClass · 0.90
SignedIntFieldClass · 0.90
IPFieldClass · 0.90
PacketListFieldClass · 0.90
ShortFieldClass · 0.90
VTPTimeStampFieldClass · 0.85

Tested by

no test coverage detected