decapsulate a MACsec frame
(self, orig_pkt)
| 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""" |