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

Method decap

scapy/contrib/macsec.py:137–151  ·  view source on GitHub ↗

decapsulate a MACsec frame

(self, orig_pkt)

Source from the content-addressed store, hash-verified

135 # this doesn't really need to be a method, but for symmetry with
136 # encap(), it is
137 def decap(self, orig_pkt):
138 """decapsulate a MACsec frame"""
139 if not isinstance(orig_pkt, Ether) or \
140 not isinstance(orig_pkt.payload, MACsec):
141 raise TypeError(
142 'cannot decapsulate MACsec packet, must be Ethernet/MACsec'
143 )
144 packet = copy.deepcopy(orig_pkt)
145 prev_layer = packet[MACsec].underlayer
146 prev_layer.type = packet[MACsec].type
147 next_layer = packet[MACsec].payload
148 del prev_layer.payload
149 if prev_layer.name == Ether().name:
150 return Ether(raw(prev_layer / next_layer))
151 return prev_layer / next_layer
152
153 def encrypt(self, orig_pkt, assoclen=None):
154 """encrypt a MACsec frame for this Secure Association"""

Callers

nothing calls this directly

Calls 2

EtherClass · 0.90
rawFunction · 0.90

Tested by

no test coverage detected