print-lwapp.c
print-lwres.c
print-m3ua.c
- print-medsa.c
print-mobile.c
print-mobility.c
print-mpcp.c
print-lwapp.c \
print-lwres.c \
print-m3ua.c \
- print-medsa.c \
print-mobile.c \
print-mobility.c \
print-mpcp.c \
#ifndef ETHERTYPE_GEONET
#define ETHERTYPE_GEONET 0x8947 /* ETSI GeoNetworking (Official IEEE registration from Jan 2013) */
#endif
-#ifndef ETHERTYPE_MEDSA
-#define ETHERTYPE_MEDSA 0xdada /* Marvel Distributed Switch Architecture */
-#endif
extern const struct tok ethertype_values[];
extern void lwapp_data_print(netdissect_options *, const u_char *, u_int);
extern void lwres_print(netdissect_options *, const u_char *, u_int);
extern void m3ua_print(netdissect_options *, const u_char *, const u_int);
-extern void medsa_print(netdissect_options *, const u_char *, u_int, u_int, const struct lladdr_info *, const struct lladdr_info *);
extern u_int mfr_print(netdissect_options *, const u_char *, u_int);
extern void mobile_print(netdissect_options *, const u_char *, u_int);
extern int mobility_print(netdissect_options *, const u_char *, const u_char *);
{ ETHERTYPE_GEONET, "GeoNet"},
{ ETHERTYPE_CALM_FAST, "CALM FAST"},
{ ETHERTYPE_AOE, "AoE" },
- { ETHERTYPE_MEDSA, "MEDSA" },
{ 0, NULL}
};
aoe_print(ndo, p, length);
return (1);
- case ETHERTYPE_MEDSA:
- medsa_print(ndo, p, length, caplen, src, dst);
- return (1);
-
case ETHERTYPE_LAT:
case ETHERTYPE_SCA:
case ETHERTYPE_MOPRC:
+++ /dev/null
-/*
- * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that: (1) source code distributions
- * retain the above copyright notice and this paragraph in its entirety, (2)
- * distributions including binary code include the above copyright notice and
- * this paragraph in its entirety in the documentation or other materials
- * provided with the distribution, and (3) all advertising materials mentioning
- * features or use of this software display the following acknowledgement:
- * ``This product includes software developed by the University of California,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may be used to endorse
- * or promote products derived from this software without specific prior
- * written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-/* \summary: Marvell Extended Distributed Switch Architecture (MEDSA) printer */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "netdissect-stdinc.h"
-
-#include "netdissect.h"
-#include "ethertype.h"
-#include "addrtoname.h"
-#include "extract.h"
-
-
-/*
- * Marvell Extended Distributed Switch Archiecture.
- *
- * A Marvell proprietary header used for passing packets to/from
- * specific ports of a switch. There is no open specification of this
- * header, but is documented in the Marvell Switch data sheets. For
- * background, see:
- *
- * https://lwn.net/Articles/302333/
- */
-struct medsa_pkthdr {
- nd_byte reserved[2];
- nd_uint8_t tag_flags_dev;
- nd_uint8_t port_trunc_codehi_cfi;
- nd_uint8_t pri_vidhi_codelo;
- nd_uint8_t vidlo;
- nd_uint16_t ether_type;
-};
-
-/* Bytes 0 and 1 are reserved and should contain 0 */
-#define TAG(medsa) (GET_U_1(medsa->tag_flags_dev) >> 6)
-#define TAG_TO_CPU 0
-#define TAG_FROM_CPU 1
-#define TAG_FORWARD 3
-#define SRC_TAG(medsa) ((GET_U_1(medsa->tag_flags_dev) >> 5) & 0x01)
-#define SRC_DEV(medsa) (GET_U_1(medsa->tag_flags_dev) & 0x1f)
-#define SRC_PORT(medsa) ((GET_U_1(medsa->port_trunc_codehi_cfi) >> 3) & 0x01f)
-#define TRUNK(medsa) ((GET_U_1(medsa->port_trunc_codehi_cfi) >> 2) & 0x01)
-#define CODE(medsa) ((GET_U_1(medsa->port_trunc_codehi_cfi) & 0x06) | \
- ((GET_U_1(medsa->pri_vidhi_codelo) >> 4) & 0x01))
-#define CODE_BDPU 0
-#define CODE_IGMP_MLD 2
-#define CODE_ARP_MIRROR 4
-#define CFI(medsa) (GET_U_1(medsa->port_trunc_codehi_cfi) & 0x01)
-#define PRI(medsa) (GET_U_1(medsa->pri_vidhi_codelo) >> 5)
-#define VID(medsa) ((u_short)(GET_U_1(medsa->pri_vidhi_codelo) & 0xf) << 8 | \
- GET_U_1(medsa->vidlo))
-
-static const struct tok tag_values[] = {
- { TAG_TO_CPU, "To_CPU" },
- { TAG_FROM_CPU, "From_CPU" },
- { TAG_FORWARD, "Forward" },
- { 0, NULL },
-};
-
-static const struct tok code_values[] = {
- { CODE_BDPU, "BDPU" },
- { CODE_IGMP_MLD, "IGMP/MLD" },
- { CODE_ARP_MIRROR, "APR_Mirror" },
- { 0, NULL },
-};
-
-static void
-medsa_print_full(netdissect_options *ndo,
- const struct medsa_pkthdr *medsa,
- u_int caplen)
-{
- u_char tag = TAG(medsa);
-
- ND_PRINT("%s",
- tok2str(tag_values, "Unknown (%u)", tag));
-
- switch (tag) {
- case TAG_TO_CPU:
- ND_PRINT(", %stagged", SRC_TAG(medsa) ? "" : "un");
- ND_PRINT(", dev.port:vlan %u.%u:%u",
- SRC_DEV(medsa), SRC_PORT(medsa), VID(medsa));
-
- ND_PRINT(", %s",
- tok2str(code_values, "Unknown (%u)", CODE(medsa)));
- if (CFI(medsa))
- ND_PRINT(", CFI");
-
- ND_PRINT(", pri %u: ", PRI(medsa));
- break;
- case TAG_FROM_CPU:
- ND_PRINT(", %stagged", SRC_TAG(medsa) ? "" : "un");
- ND_PRINT(", dev.port:vlan %u.%u:%u",
- SRC_DEV(medsa), SRC_PORT(medsa), VID(medsa));
-
- if (CFI(medsa))
- ND_PRINT(", CFI");
-
- ND_PRINT(", pri %u: ", PRI(medsa));
- break;
- case TAG_FORWARD:
- ND_PRINT(", %stagged", SRC_TAG(medsa) ? "" : "un");
- if (TRUNK(medsa))
- ND_PRINT(", dev.trunk:vlan %u.%u:%u",
- SRC_DEV(medsa), SRC_PORT(medsa), VID(medsa));
- else
- ND_PRINT(", dev.port:vlan %u.%u:%u",
- SRC_DEV(medsa), SRC_PORT(medsa), VID(medsa));
-
- if (CFI(medsa))
- ND_PRINT(", CFI");
-
- ND_PRINT(", pri %u: ", PRI(medsa));
- break;
- default:
- ND_DEFAULTPRINT((const u_char *)medsa, caplen);
- return;
- }
-}
-
-void
-medsa_print(netdissect_options *ndo,
- const u_char *bp, u_int length, u_int caplen,
- const struct lladdr_info *src, const struct lladdr_info *dst)
-{
- const struct medsa_pkthdr *medsa;
- u_short ether_type;
-
- ndo->ndo_protocol = "medsa";
- medsa = (const struct medsa_pkthdr *)bp;
- ND_TCHECK_SIZE(medsa);
-
- if (!ndo->ndo_eflag)
- ND_PRINT("MEDSA %u.%u:%u: ",
- SRC_DEV(medsa), SRC_PORT(medsa), VID(medsa));
- else
- medsa_print_full(ndo, medsa, caplen);
-
- bp += 8;
- length -= 8;
- caplen -= 8;
-
- ether_type = GET_BE_U_2(medsa->ether_type);
- if (ether_type <= MAX_ETHERNET_LENGTH_VAL) {
- /* Try to print the LLC-layer header & higher layers */
- if (llc_print(ndo, bp, length, caplen, src, dst) < 0) {
- /* packet type not known, print raw packet */
- if (!ndo->ndo_suppress_default_print)
- ND_DEFAULTPRINT(bp, caplen);
- }
- } else {
- if (ndo->ndo_eflag)
- ND_PRINT("ethertype %s (0x%04x) ",
- tok2str(ethertype_values, "Unknown",
- ether_type),
- ether_type);
- if (ethertype_print(ndo, ether_type, bp, length, caplen, src, dst) == 0) {
- /* ether_type not known, print raw packet */
- if (!ndo->ndo_eflag)
- ND_PRINT("ethertype %s (0x%04x) ",
- tok2str(ethertype_values, "Unknown",
- ether_type),
- ether_type);
-
- if (!ndo->ndo_suppress_default_print)
- ND_DEFAULTPRINT(bp, caplen);
- }
- }
- return;
-trunc:
- nd_print_trunc(ndo);
-}
dhcp-rfc5859 dhcp-rfc5859.pcap dhcp-rfc5859-v.out -v
dhcp-mud dhcp-mud.pcap dhcp-mud.out -vv
-# MEDSA tests
-medsa medsa.pcap medsa.out
-medsa-e medsa.pcap medsa-e.out -e
-
# VXLAN tests
vxlan vxlan.pcap vxlan.out -e
1 05:27:12.808464432 30:30:30:30:30:30 > 30:30:30:30:30:30, ethertype Unknown (0x3030), length 262144:
0x0000: 3030 3030 3030 3030 3030 3030 3030 3030 0000000000000000
0x0010: 3030 3030 0000
- 2 05:27:12.808464432 MEDSA 16.6:48: [|decnet]
+ 2 05:27:12.808464432 30:30:30:30:30:30 > 30:30:30:30:30:30, ethertype Unknown (0xdada), length 262144:
+ 0x0000: 3030 3030 3030 6003 3030 8a30 3030 3030 000000`.00.00000
+ 0x0010: 3030 3030 0000
+++ /dev/null
- 1 12:57:38.954696 26:a1:fb:92:da:73 > 01:80:c2:00:00:00, ethertype MEDSA (0xdada), length 68: To_CPU, untagged, dev.port:vlan 0.2:0, BDPU, pri 7: LLC, dsap STP (0x42) Individual, ssap STP (0x42) Command, ctrl 0x03: STP 802.1d, Config, Flags [none], bridge-id 8000.26:a1:fb:92:da:73.8001, length 43
- 2 12:57:40.089958 94:10:3e:80:bc:f3 > 00:22:02:00:18:44, ethertype MEDSA (0xdada), length 98: From_CPU, untagged, dev.port:vlan 0.3:0, pri 0: ethertype IPv4 (0x0800) 10.0.0.12.59483 > 198.110.48.12.123: NTPv4, Client, length 48
- 3 12:57:40.129554 00:22:02:00:18:44 > 94:10:3e:80:bc:f3, ethertype MEDSA (0xdada), length 98: Forward, untagged, dev.port:vlan 0.3:0, pri 0: ethertype IPv4 (0x0800) 198.110.48.12.123 > 10.0.0.12.59483: NTPv4, Server, length 48
- 4 12:57:40.955210 26:a1:fb:92:da:73 > 01:80:c2:00:00:00, ethertype MEDSA (0xdada), length 68: To_CPU, untagged, dev.port:vlan 0.2:0, BDPU, pri 7: LLC, dsap STP (0x42) Individual, ssap STP (0x42) Command, ctrl 0x03: STP 802.1d, Config, Flags [none], bridge-id 8000.26:a1:fb:92:da:73.8001, length 43
- 5 12:57:42.956001 26:a1:fb:92:da:73 > 01:80:c2:00:00:00, ethertype MEDSA (0xdada), length 68: To_CPU, untagged, dev.port:vlan 0.2:0, BDPU, pri 7: LLC, dsap STP (0x42) Individual, ssap STP (0x42) Command, ctrl 0x03: STP 802.1d, Config, Flags [none], bridge-id 8000.26:a1:fb:92:da:73.8001, length 43
- 6 12:57:44.130355 94:10:3e:80:bc:f3 > 00:22:02:00:18:44, ethertype MEDSA (0xdada), length 98: From_CPU, untagged, dev.port:vlan 0.3:0, pri 0: ethertype IPv4 (0x0800) 10.0.0.12.59809 > 66.228.42.59.123: NTPv4, Client, length 48
- 7 12:57:44.130393 94:10:3e:80:bc:f3 > 00:22:02:00:18:44, ethertype MEDSA (0xdada), length 98: From_CPU, untagged, dev.port:vlan 0.3:0, pri 0: ethertype IPv4 (0x0800) 10.0.0.12.58880 > 199.102.46.76.123: NTPv4, Client, length 48
- 8 12:57:44.175132 00:22:02:00:18:44 > 94:10:3e:80:bc:f3, ethertype MEDSA (0xdada), length 98: Forward, untagged, dev.port:vlan 0.3:0, pri 0: ethertype IPv4 (0x0800) 199.102.46.76.123 > 10.0.0.12.58880: NTPv4, Server, length 48
- 9 12:57:44.189786 00:22:02:00:18:44 > 94:10:3e:80:bc:f3, ethertype MEDSA (0xdada), length 98: Forward, untagged, dev.port:vlan 0.3:0, pri 0: ethertype IPv4 (0x0800) 66.228.42.59.123 > 10.0.0.12.59809: NTPv4, Server, length 48
- 10 12:57:44.956531 26:a1:fb:92:da:73 > 01:80:c2:00:00:00, ethertype MEDSA (0xdada), length 68: To_CPU, untagged, dev.port:vlan 0.2:0, BDPU, pri 7: LLC, dsap STP (0x42) Individual, ssap STP (0x42) Command, ctrl 0x03: STP 802.1d, Config, Flags [none], bridge-id 8000.26:a1:fb:92:da:73.8001, length 43
- 11 12:57:46.190350 94:10:3e:80:bc:f3 > 00:22:02:00:18:44, ethertype MEDSA (0xdada), length 98: From_CPU, untagged, dev.port:vlan 0.3:0, pri 0: ethertype IPv4 (0x0800) 10.0.0.12.41068 > 208.97.140.69.123: NTPv4, Client, length 48
- 12 12:57:46.257959 00:22:02:00:18:44 > 94:10:3e:80:bc:f3, ethertype MEDSA (0xdada), length 98: Forward, untagged, dev.port:vlan 0.3:0, pri 0: ethertype IPv4 (0x0800) 208.97.140.69.123 > 10.0.0.12.41068: NTPv4, Server, length 48
- 13 12:57:46.956710 26:a1:fb:92:da:73 > 01:80:c2:00:00:00, ethertype MEDSA (0xdada), length 68: To_CPU, untagged, dev.port:vlan 0.2:0, BDPU, pri 7: LLC, dsap STP (0x42) Individual, ssap STP (0x42) Command, ctrl 0x03: STP 802.1d, Config, Flags [none], bridge-id 8000.26:a1:fb:92:da:73.8001, length 43
- 14 12:57:48.956704 26:a1:fb:92:da:73 > 01:80:c2:00:00:00, ethertype MEDSA (0xdada), length 68: To_CPU, untagged, dev.port:vlan 0.2:0, BDPU, pri 7: LLC, dsap STP (0x42) Individual, ssap STP (0x42) Command, ctrl 0x03: STP 802.1d, Config, Flags [none], bridge-id 8000.26:a1:fb:92:da:73.8001, length 43
- 15 12:57:50.560492 94:10:3e:80:bc:f3 > 00:22:02:00:18:44, ethertype MEDSA (0xdada), length 350: From_CPU, untagged, dev.port:vlan 0.3:0, pri 0: ethertype IPv4 (0x0800) 10.0.0.12.68 > 10.0.0.1.67: BOOTP/DHCP, Request from 94:10:3e:80:bc:f3, length 300
- 16 12:57:50.561440 00:22:02:00:18:44 > 94:10:3e:80:bc:f3, ethertype MEDSA (0xdada), length 350: Forward, untagged, dev.port:vlan 0.3:0, pri 0: ethertype IPv4 (0x0800) 10.0.0.1.67 > 10.0.0.12.68: BOOTP/DHCP, Reply, length 300
- 17 12:57:50.956688 26:a1:fb:92:da:73 > 01:80:c2:00:00:00, ethertype MEDSA (0xdada), length 68: To_CPU, untagged, dev.port:vlan 0.2:0, BDPU, pri 7: LLC, dsap STP (0x42) Individual, ssap STP (0x42) Command, ctrl 0x03: STP 802.1d, Config, Flags [none], bridge-id 8000.26:a1:fb:92:da:73.8001, length 43
- 18 12:57:52.956681 26:a1:fb:92:da:73 > 01:80:c2:00:00:00, ethertype MEDSA (0xdada), length 68: To_CPU, untagged, dev.port:vlan 0.2:0, BDPU, pri 7: LLC, dsap STP (0x42) Individual, ssap STP (0x42) Command, ctrl 0x03: STP 802.1d, Config, Flags [none], bridge-id 8000.26:a1:fb:92:da:73.8001, length 43
- 19 12:57:53.260353 94:10:3e:80:bc:f3 > 00:22:02:00:18:44, ethertype MEDSA (0xdada), length 98: From_CPU, untagged, dev.port:vlan 0.3:0, pri 0: ethertype IPv4 (0x0800) 10.0.0.12.45651 > 171.66.97.126.123: NTPv4, Client, length 48
- 20 12:57:53.325316 00:22:02:00:18:44 > 94:10:3e:80:bc:f3, ethertype MEDSA (0xdada), length 98: Forward, untagged, dev.port:vlan 0.3:0, pri 0: ethertype IPv4 (0x0800) 171.66.97.126.123 > 10.0.0.12.45651: NTPv4, Server, length 48
+++ /dev/null
- 1 12:57:38.954696 MEDSA 0.2:0: STP 802.1d, Config, Flags [none], bridge-id 8000.26:a1:fb:92:da:73.8001, length 43
- 2 12:57:40.089958 MEDSA 0.3:0: IP 10.0.0.12.59483 > 198.110.48.12.123: NTPv4, Client, length 48
- 3 12:57:40.129554 MEDSA 0.3:0: IP 198.110.48.12.123 > 10.0.0.12.59483: NTPv4, Server, length 48
- 4 12:57:40.955210 MEDSA 0.2:0: STP 802.1d, Config, Flags [none], bridge-id 8000.26:a1:fb:92:da:73.8001, length 43
- 5 12:57:42.956001 MEDSA 0.2:0: STP 802.1d, Config, Flags [none], bridge-id 8000.26:a1:fb:92:da:73.8001, length 43
- 6 12:57:44.130355 MEDSA 0.3:0: IP 10.0.0.12.59809 > 66.228.42.59.123: NTPv4, Client, length 48
- 7 12:57:44.130393 MEDSA 0.3:0: IP 10.0.0.12.58880 > 199.102.46.76.123: NTPv4, Client, length 48
- 8 12:57:44.175132 MEDSA 0.3:0: IP 199.102.46.76.123 > 10.0.0.12.58880: NTPv4, Server, length 48
- 9 12:57:44.189786 MEDSA 0.3:0: IP 66.228.42.59.123 > 10.0.0.12.59809: NTPv4, Server, length 48
- 10 12:57:44.956531 MEDSA 0.2:0: STP 802.1d, Config, Flags [none], bridge-id 8000.26:a1:fb:92:da:73.8001, length 43
- 11 12:57:46.190350 MEDSA 0.3:0: IP 10.0.0.12.41068 > 208.97.140.69.123: NTPv4, Client, length 48
- 12 12:57:46.257959 MEDSA 0.3:0: IP 208.97.140.69.123 > 10.0.0.12.41068: NTPv4, Server, length 48
- 13 12:57:46.956710 MEDSA 0.2:0: STP 802.1d, Config, Flags [none], bridge-id 8000.26:a1:fb:92:da:73.8001, length 43
- 14 12:57:48.956704 MEDSA 0.2:0: STP 802.1d, Config, Flags [none], bridge-id 8000.26:a1:fb:92:da:73.8001, length 43
- 15 12:57:50.560492 MEDSA 0.3:0: IP 10.0.0.12.68 > 10.0.0.1.67: BOOTP/DHCP, Request from 94:10:3e:80:bc:f3, length 300
- 16 12:57:50.561440 MEDSA 0.3:0: IP 10.0.0.1.67 > 10.0.0.12.68: BOOTP/DHCP, Reply, length 300
- 17 12:57:50.956688 MEDSA 0.2:0: STP 802.1d, Config, Flags [none], bridge-id 8000.26:a1:fb:92:da:73.8001, length 43
- 18 12:57:52.956681 MEDSA 0.2:0: STP 802.1d, Config, Flags [none], bridge-id 8000.26:a1:fb:92:da:73.8001, length 43
- 19 12:57:53.260353 MEDSA 0.3:0: IP 10.0.0.12.45651 > 171.66.97.126.123: NTPv4, Client, length 48
- 20 12:57:53.325316 MEDSA 0.3:0: IP 171.66.97.126.123 > 10.0.0.12.45651: NTPv4, Server, length 48