| 261 | return self[item] if item in self else default |
| 262 | |
| 263 | def __repr__(self): |
| 264 | # type: () -> str |
| 265 | lst = [] |
| 266 | for num, layer in self.num2layer.items(): |
| 267 | if layer in self.layer2num and self.layer2num[layer] == num: |
| 268 | dir = "<->" |
| 269 | else: |
| 270 | dir = " ->" |
| 271 | lst.append((num, "%#6x %s %-20s (%s)" % (num, dir, layer.__name__, |
| 272 | layer._name))) |
| 273 | for layer, num in self.layer2num.items(): |
| 274 | if num not in self.num2layer or self.num2layer[num] != layer: |
| 275 | lst.append((num, "%#6x <- %-20s (%s)" % (num, layer.__name__, |
| 276 | layer._name))) |
| 277 | lst.sort() |
| 278 | return "\n".join(y for x, y in lst) |
| 279 | |
| 280 | |
| 281 | class LayersList(List[Type['scapy.packet.Packet']]): |