% ERSPAN + ERSPAN I = Build & dissect ERSPAN 1 pkt = GRE()/ERSPAN_I()/Ether() pkt = GRE(bytes(pkt)) assert ERSPAN in pkt assert pkt.proto == 0x88be assert pkt.seqnum_present == 0 + ERSPAN II = Build ERSPAN II pkt = GRE()/ERSPAN_II()/Ether(src="11:11:11:11:11:11", dst="ff:ff:ff:ff:ff:ff") b = bytes(pkt) assert b == b'\x10\x00\x88\xbe\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x11\x11\x11\x11\x11\x11\x90\x00' = Dissect ERSPAN II pkt = GRE(b) assert pkt[GRE].proto == 0x88be assert pkt[GRE].seqnum_present == 1 assert pkt[GRE][ERSPAN].ver == 1 assert pkt[Ether].src == "11:11:11:11:11:11" + ERSPAN III = Build & dissect ERSPAN III with platform specific pkt = GRE()/ERSPAN_III()/ERSPAN_PlatformSpecific()/Ether() pkt = GRE(bytes(pkt)) assert pkt[GRE].proto == 0x22eb assert pkt[ERSPAN_III].o == 1 assert ERSPAN_PlatformSpecific in pkt assert Ether in pkt = Build & dissect ERSPAN III without platform specific pkt = GRE()/ERSPAN_III()/Ether() pkt = GRE(bytes(pkt)) assert pkt[GRE].proto == 0x22eb assert pkt[ERSPAN_III].o == 0 assert ERSPAN_PlatformSpecific not in pkt assert Ether in pkt