mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager
synced 2024-09-06 17:14:02 +00:00
lldp: merge branch 'th/lldp-mud-url'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/539
This commit is contained in:
commit
84a68972df
|
@ -880,6 +880,8 @@ typedef enum /*< flags >*/ {
|
|||
#define NM_LLDP_ATTR_IEEE_802_3_POWER_VIA_MDI "ieee-802-3-power-via-mdi"
|
||||
#define NM_LLDP_ATTR_IEEE_802_3_MAX_FRAME_SIZE "ieee-802-3-max-frame-size"
|
||||
|
||||
#define NM_LLDP_ATTR_MUD_URL "mud-url"
|
||||
|
||||
/* These are deprecated in favor of NM_LLDP_ATTR_IEEE_802_1_VLANS,
|
||||
* which can report multiple VLANs */
|
||||
#define NM_LLDP_ATTR_IEEE_802_1_VID "ieee-802-1-vid"
|
||||
|
|
|
@ -329,7 +329,8 @@ parse_management_address_tlv (const uint8_t *data, gsize len)
|
|||
nm_g_variant_builder_add_sv_bytearray (&builder, "address", v_address_arr, v_address_len);
|
||||
nm_g_variant_builder_add_sv_uint32 (&builder, "interface-number-subtype", v_interface_number_subtype);
|
||||
nm_g_variant_builder_add_sv_uint32 (&builder, "interface-number", v_interface_number);
|
||||
nm_g_variant_builder_add_sv_bytearray (&builder, "object-id", v_object_id_arr, v_object_id_len);
|
||||
if (v_object_id_len > 0)
|
||||
nm_g_variant_builder_add_sv_bytearray (&builder, "object-id", v_object_id_arr, v_object_id_len);
|
||||
return g_variant_builder_end (&builder);
|
||||
}
|
||||
|
||||
|
@ -353,6 +354,45 @@ format_network_address (const guint8 *data, gsize sz)
|
|||
return nm_utils_inet_ntop_dup (family, &a);
|
||||
}
|
||||
|
||||
static const char *
|
||||
format_string (const guint8 *data, gsize len, gboolean allow_trim, char **out_to_free)
|
||||
{
|
||||
gboolean is_null_terminated = FALSE;
|
||||
|
||||
nm_assert (out_to_free && !*out_to_free);
|
||||
|
||||
if (allow_trim) {
|
||||
while ( len > 0
|
||||
&& data[len - 1] == '\0') {
|
||||
is_null_terminated = TRUE;
|
||||
len--;
|
||||
}
|
||||
}
|
||||
|
||||
if (len == 0)
|
||||
return NULL;
|
||||
|
||||
if (memchr (data, len, '\0'))
|
||||
return NULL;
|
||||
|
||||
return nm_utils_buf_utf8safe_escape (data,
|
||||
is_null_terminated ? -1 : (gssize) len,
|
||||
NM_UTILS_STR_UTF8_SAFE_FLAG_ESCAPE_CTRL
|
||||
| NM_UTILS_STR_UTF8_SAFE_FLAG_ESCAPE_NON_ASCII,
|
||||
out_to_free);
|
||||
}
|
||||
|
||||
static char *
|
||||
format_string_cp (const guint8 *data, gsize len, gboolean allow_trim)
|
||||
{
|
||||
char *s_free = NULL;
|
||||
const char *s;
|
||||
|
||||
s = format_string (data, len, allow_trim, &s_free);
|
||||
nm_assert (!s_free || s == s_free);
|
||||
return s ? (s_free ?: g_strdup (s)) : NULL;
|
||||
}
|
||||
|
||||
static LldpNeighbor *
|
||||
lldp_neighbor_new (sd_lldp_neighbor *neighbor_sd)
|
||||
{
|
||||
|
@ -381,7 +421,7 @@ lldp_neighbor_new (sd_lldp_neighbor *neighbor_sd)
|
|||
case SD_LLDP_CHASSIS_SUBTYPE_PORT_COMPONENT:
|
||||
case SD_LLDP_CHASSIS_SUBTYPE_INTERFACE_NAME:
|
||||
case SD_LLDP_CHASSIS_SUBTYPE_LOCALLY_ASSIGNED:
|
||||
s_chassis_id = nm_utils_buf_utf8safe_escape_cp (chassis_id, chassis_id_len, NM_UTILS_STR_UTF8_SAFE_FLAG_ESCAPE_CTRL | NM_UTILS_STR_UTF8_SAFE_FLAG_ESCAPE_NON_ASCII);
|
||||
s_chassis_id = format_string_cp (chassis_id, chassis_id_len, FALSE);
|
||||
break;
|
||||
case SD_LLDP_CHASSIS_SUBTYPE_MAC_ADDRESS:
|
||||
s_chassis_id = nm_utils_hwaddr_ntoa (chassis_id, chassis_id_len);
|
||||
|
@ -402,7 +442,7 @@ lldp_neighbor_new (sd_lldp_neighbor *neighbor_sd)
|
|||
case SD_LLDP_PORT_SUBTYPE_PORT_COMPONENT:
|
||||
case SD_LLDP_PORT_SUBTYPE_INTERFACE_NAME:
|
||||
case SD_LLDP_PORT_SUBTYPE_LOCALLY_ASSIGNED:
|
||||
s_port_id = nm_utils_buf_utf8safe_escape_cp (port_id, port_id_len, NM_UTILS_STR_UTF8_SAFE_FLAG_ESCAPE_CTRL | NM_UTILS_STR_UTF8_SAFE_FLAG_ESCAPE_NON_ASCII);
|
||||
s_port_id = format_string_cp (port_id, port_id_len, FALSE);
|
||||
break;
|
||||
case SD_LLDP_PORT_SUBTYPE_MAC_ADDRESS:
|
||||
s_port_id = nm_utils_hwaddr_ntoa (port_id, port_id_len);
|
||||
|
@ -500,6 +540,7 @@ lldp_neighbor_to_variant (LldpNeighbor *neigh)
|
|||
GVariant *v_ieee_802_3_mac_phy_conf = NULL;
|
||||
GVariant *v_ieee_802_3_power_via_mdi = NULL;
|
||||
GVariant *v_ieee_802_3_max_frame_size = NULL;
|
||||
GVariant *v_mud_url = NULL;
|
||||
GVariantBuilder tmp_builder;
|
||||
GVariant *tmp_variant;
|
||||
|
||||
|
@ -541,8 +582,7 @@ lldp_neighbor_to_variant (LldpNeighbor *neigh)
|
|||
break;
|
||||
}
|
||||
|
||||
if ( memcmp (oui, SD_LLDP_OUI_802_1, sizeof (oui)) != 0
|
||||
&& memcmp (oui, SD_LLDP_OUI_802_3, sizeof (oui)) != 0)
|
||||
if (len <= 6)
|
||||
continue;
|
||||
|
||||
/* skip over leading TLV, OUI and subtype */
|
||||
|
@ -558,8 +598,6 @@ lldp_neighbor_to_variant (LldpNeighbor *neigh)
|
|||
nm_assert (memcmp (data8, check_hdr, sizeof check_hdr) == 0);
|
||||
}
|
||||
#endif
|
||||
if (len <= 6)
|
||||
continue;
|
||||
data8 += 6;
|
||||
len -= 6;
|
||||
|
||||
|
@ -588,7 +626,7 @@ lldp_neighbor_to_variant (LldpNeighbor *neigh)
|
|||
gs_free char *name_to_free = NULL;
|
||||
const char *name;
|
||||
guint32 vid;
|
||||
int l;
|
||||
gsize l;
|
||||
|
||||
if (len <= 3)
|
||||
continue;
|
||||
|
@ -599,9 +637,11 @@ lldp_neighbor_to_variant (LldpNeighbor *neigh)
|
|||
if (l > 32)
|
||||
continue;
|
||||
|
||||
name = nm_utils_buf_utf8safe_escape (&data8[3], l, 0, &name_to_free);
|
||||
vid = unaligned_read_be16 (&data8[0]);
|
||||
name = format_string (&data8[3], l, TRUE, &name_to_free);
|
||||
if (!name)
|
||||
continue;
|
||||
|
||||
vid = unaligned_read_be16 (&data8[0]);
|
||||
if (!v_ieee_802_1_vid) {
|
||||
v_ieee_802_1_vid = g_variant_new_uint32 (vid);
|
||||
v_ieee_802_1_vlan_name = g_variant_new_string (name);
|
||||
|
@ -649,6 +689,19 @@ lldp_neighbor_to_variant (LldpNeighbor *neigh)
|
|||
v_ieee_802_3_max_frame_size = g_variant_new_uint32 (unaligned_read_be16 (data8));
|
||||
break;
|
||||
}
|
||||
} else if (memcmp (oui, SD_LLDP_OUI_MUD, sizeof (oui)) == 0) {
|
||||
switch (subtype) {
|
||||
case SD_LLDP_OUI_SUBTYPE_MUD_USAGE_DESCRIPTION:
|
||||
if (!v_mud_url) {
|
||||
gs_free char *s_free = NULL;
|
||||
const char *s;
|
||||
|
||||
s = format_string (data8, len, TRUE, &s_free);
|
||||
if (s)
|
||||
v_mud_url = g_variant_new_string (s);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
} while (sd_lldp_neighbor_tlv_next (neigh->neighbor_sd) > 0);
|
||||
|
||||
|
@ -672,6 +725,8 @@ lldp_neighbor_to_variant (LldpNeighbor *neigh)
|
|||
nm_g_variant_builder_add_sv (&builder, NM_LLDP_ATTR_IEEE_802_3_POWER_VIA_MDI, v_ieee_802_3_power_via_mdi);
|
||||
if (v_ieee_802_3_max_frame_size)
|
||||
nm_g_variant_builder_add_sv (&builder, NM_LLDP_ATTR_IEEE_802_3_MAX_FRAME_SIZE, v_ieee_802_3_max_frame_size);
|
||||
if (v_mud_url)
|
||||
nm_g_variant_builder_add_sv (&builder, NM_LLDP_ATTR_MUD_URL, v_mud_url);
|
||||
}
|
||||
|
||||
return (neigh->variant = g_variant_ref_sink (g_variant_builder_end (&builder)));
|
||||
|
|
|
@ -170,7 +170,7 @@ TEST_RECV_DATA_DEFINE (_test_recv_data0_twice, 1, _test_recv_data0_check, &_tes
|
|||
TEST_RECV_FRAME_DEFINE (_test_recv_data1_frame0,
|
||||
/* lldp.detailed.pcap from
|
||||
* https://wiki.wireshark.org/SampleCaptures#Link_Layer_Discovery_Protocol_.28LLDP.29 */
|
||||
"{'raw': <[byte 0x01, 0x80, 0xc2, 0x00, 0x00, 0x0e, 0x00, 0x01, 0x30, 0xf9, 0xad, 0xa0, 0x88, 0xcc, 0x02, 0x07, 0x04, 0x00, 0x01, 0x30, 0xf9, 0xad, 0xa0, 0x04, 0x04, 0x05, 0x31, 0x2f, 0x31, 0x06, 0x02, 0x00, 0x78, 0x08, 0x17, 0x53, 0x75, 0x6d, 0x6d, 0x69, 0x74, 0x33, 0x30, 0x30, 0x2d, 0x34, 0x38, 0x2d, 0x50, 0x6f, 0x72, 0x74, 0x20, 0x31, 0x30, 0x30, 0x31, 0x00, 0x0a, 0x0d, 0x53, 0x75, 0x6d, 0x6d, 0x69, 0x74, 0x33, 0x30, 0x30, 0x2d, 0x34, 0x38, 0x00, 0x0c, 0x4c, 0x53, 0x75, 0x6d, 0x6d, 0x69, 0x74, 0x33, 0x30, 0x30, 0x2d, 0x34, 0x38, 0x20, 0x2d, 0x20, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x37, 0x2e, 0x34, 0x65, 0x2e, 0x31, 0x20, 0x28, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x20, 0x35, 0x29, 0x20, 0x62, 0x79, 0x20, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x20, 0x30, 0x35, 0x2f, 0x32, 0x37, 0x2f, 0x30, 0x35, 0x20, 0x30, 0x34, 0x3a, 0x35, 0x33, 0x3a, 0x31, 0x31, 0x00, 0x0e, 0x04, 0x00, 0x14, 0x00, 0x14, 0x10, 0x0e, 0x07, 0x06, 0x00, 0x01, 0x30, 0xf9, 0xad, 0xa0, 0x02, 0x00, 0x00, 0x03, 0xe9, 0x00, 0xfe, 0x07, 0x00, 0x12, 0x0f, 0x02, 0x07, 0x01, 0x00, 0xfe, 0x09, 0x00, 0x12, 0x0f, 0x01, 0x03, 0x6c, 0x00, 0x00, 0x10, 0xfe, 0x09, 0x00, 0x12, 0x0f, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x06, 0x00, 0x12, 0x0f, 0x04, 0x05, 0xf2, 0xfe, 0x06, 0x00, 0x80, 0xc2, 0x01, 0x01, 0xe8, 0xfe, 0x07, 0x00, 0x80, 0xc2, 0x02, 0x01, 0x00, 0x00, 0xfe, 0x16, 0x00, 0x80, 0xc2, 0x03, 0x01, 0xe8, 0x0f, 0x76, 0x32, 0x2d, 0x30, 0x34, 0x38, 0x38, 0x2d, 0x30, 0x33, 0x2d, 0x30, 0x35, 0x30, 0x35, 0xfe, 0x05, 0x00, 0x80, 0xc2, 0x04, 0x00, 0x00, 0x00]>, 'chassis-id-type': <uint32 4>, 'chassis-id': <'00:01:30:F9:AD:A0'>, 'port-id-type': <uint32 5>, 'port-id': <'1/1'>, 'destination': <'nearest-bridge'>, 'port-description': <'Summit300-48-Port 1001'>, 'system-name': <'Summit300-48'>, 'system-description': <'Summit300-48 - Version 7.4e.1 (Build 5) by Release_Master 05/27/05 04:53:11'>, 'system-capabilities': <uint32 20>, 'management-addresses': <[{'address-subtype': <uint32 6>, 'address': <[byte 0x00, 0x01, 0x30, 0xf9, 0xad, 0xa0]>, 'interface-number-subtype': <uint32 2>, 'interface-number': <uint32 1001>, 'object-id': <@ay []>}]>, 'ieee-802-1-pvid': <uint32 488>, 'ieee-802-1-ppvid': <uint32 0>, 'ieee-802-1-ppvid-flags': <uint32 1>, 'ieee-802-1-ppvids': <[{'ppvid': <uint32 0>, 'flags': <uint32 1>}]>, 'ieee-802-1-vid': <uint32 488>, 'ieee-802-1-vlan-name': <'v2-0488-03-0505'>, 'ieee-802-1-vlans': <[{'vid': <uint32 488>, 'name': <'v2-0488-03-0505'>}]>, 'ieee-802-3-mac-phy-conf': <{'autoneg': <uint32 3>, 'pmd-autoneg-cap': <uint32 27648>, 'operational-mau-type': <uint32 16>}>, 'ieee-802-3-power-via-mdi': <{'mdi-power-support': <uint32 7>, 'pse-power-pair': <uint32 1>, 'power-class': <uint32 0>}>, 'ieee-802-3-max-frame-size': <uint32 1522>}",
|
||||
"{'raw': <[byte 0x01, 0x80, 0xc2, 0x00, 0x00, 0x0e, 0x00, 0x01, 0x30, 0xf9, 0xad, 0xa0, 0x88, 0xcc, 0x02, 0x07, 0x04, 0x00, 0x01, 0x30, 0xf9, 0xad, 0xa0, 0x04, 0x04, 0x05, 0x31, 0x2f, 0x31, 0x06, 0x02, 0x00, 0x78, 0x08, 0x17, 0x53, 0x75, 0x6d, 0x6d, 0x69, 0x74, 0x33, 0x30, 0x30, 0x2d, 0x34, 0x38, 0x2d, 0x50, 0x6f, 0x72, 0x74, 0x20, 0x31, 0x30, 0x30, 0x31, 0x00, 0x0a, 0x0d, 0x53, 0x75, 0x6d, 0x6d, 0x69, 0x74, 0x33, 0x30, 0x30, 0x2d, 0x34, 0x38, 0x00, 0x0c, 0x4c, 0x53, 0x75, 0x6d, 0x6d, 0x69, 0x74, 0x33, 0x30, 0x30, 0x2d, 0x34, 0x38, 0x20, 0x2d, 0x20, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x37, 0x2e, 0x34, 0x65, 0x2e, 0x31, 0x20, 0x28, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x20, 0x35, 0x29, 0x20, 0x62, 0x79, 0x20, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x20, 0x30, 0x35, 0x2f, 0x32, 0x37, 0x2f, 0x30, 0x35, 0x20, 0x30, 0x34, 0x3a, 0x35, 0x33, 0x3a, 0x31, 0x31, 0x00, 0x0e, 0x04, 0x00, 0x14, 0x00, 0x14, 0x10, 0x0e, 0x07, 0x06, 0x00, 0x01, 0x30, 0xf9, 0xad, 0xa0, 0x02, 0x00, 0x00, 0x03, 0xe9, 0x00, 0xfe, 0x07, 0x00, 0x12, 0x0f, 0x02, 0x07, 0x01, 0x00, 0xfe, 0x09, 0x00, 0x12, 0x0f, 0x01, 0x03, 0x6c, 0x00, 0x00, 0x10, 0xfe, 0x09, 0x00, 0x12, 0x0f, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x06, 0x00, 0x12, 0x0f, 0x04, 0x05, 0xf2, 0xfe, 0x06, 0x00, 0x80, 0xc2, 0x01, 0x01, 0xe8, 0xfe, 0x07, 0x00, 0x80, 0xc2, 0x02, 0x01, 0x00, 0x00, 0xfe, 0x16, 0x00, 0x80, 0xc2, 0x03, 0x01, 0xe8, 0x0f, 0x76, 0x32, 0x2d, 0x30, 0x34, 0x38, 0x38, 0x2d, 0x30, 0x33, 0x2d, 0x30, 0x35, 0x30, 0x35, 0xfe, 0x05, 0x00, 0x80, 0xc2, 0x04, 0x00, 0x00, 0x00]>, 'chassis-id-type': <uint32 4>, 'chassis-id': <'00:01:30:F9:AD:A0'>, 'port-id-type': <uint32 5>, 'port-id': <'1/1'>, 'destination': <'nearest-bridge'>, 'port-description': <'Summit300-48-Port 1001'>, 'system-name': <'Summit300-48'>, 'system-description': <'Summit300-48 - Version 7.4e.1 (Build 5) by Release_Master 05/27/05 04:53:11'>, 'system-capabilities': <uint32 20>, 'management-addresses': <[{'address-subtype': <uint32 6>, 'address': <[byte 0x00, 0x01, 0x30, 0xf9, 0xad, 0xa0]>, 'interface-number-subtype': <uint32 2>, 'interface-number': <uint32 1001>}]>, 'ieee-802-1-pvid': <uint32 488>, 'ieee-802-1-ppvid': <uint32 0>, 'ieee-802-1-ppvid-flags': <uint32 1>, 'ieee-802-1-ppvids': <[{'ppvid': <uint32 0>, 'flags': <uint32 1>}]>, 'ieee-802-1-vid': <uint32 488>, 'ieee-802-1-vlan-name': <'v2-0488-03-0505'>, 'ieee-802-1-vlans': <[{'vid': <uint32 488>, 'name': <'v2-0488-03-0505'>}]>, 'ieee-802-3-mac-phy-conf': <{'autoneg': <uint32 3>, 'pmd-autoneg-cap': <uint32 27648>, 'operational-mau-type': <uint32 16>}>, 'ieee-802-3-power-via-mdi': <{'mdi-power-support': <uint32 7>, 'pse-power-pair': <uint32 1>, 'power-class': <uint32 0>}>, 'ieee-802-3-max-frame-size': <uint32 1522>}",
|
||||
/* ethernet header */
|
||||
0x01, 0x80, 0xc2, 0x00, 0x00, 0x0e, /* destination mac */
|
||||
0x00, 0x01, 0x30, 0xf9, 0xad, 0xa0, /* source mac */
|
||||
|
@ -553,6 +553,40 @@ test_parse_frames (gconstpointer test_data)
|
|||
|
||||
/*****************************************************************************/
|
||||
|
||||
TEST_RECV_FRAME_DEFINE (_test_parse_frames_3,
|
||||
/* https://github.com/the-tcpdump-group/tcpdump/blob/c4f8796bf8bec740621a360eded236d8991ea00f/tests/lldp_mudurl.pcap */
|
||||
"{'raw': <[byte 0x01, 0x80, 0xc2, 0x00, 0x00, 0x0e, 0x00, 0x23, 0x54, 0xc2, 0x57, 0x02, 0x88, 0xcc, 0x02, 0x07, 0x04, 0x00, 0x23, 0x54, 0xc2, 0x57, 0x02, 0x04, 0x07, 0x03, 0x00, 0x23, 0x54, 0xc2, 0x57, 0x02, 0x06, 0x02, 0x00, 0x78, 0x0a, 0x1c, 0x75, 0x70, 0x73, 0x74, 0x61, 0x69, 0x72, 0x73, 0x2e, 0x6f, 0x66, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x69, 0x6d, 0x72, 0x69, 0x67, 0x68, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x0c, 0x5c, 0x55, 0x62, 0x75, 0x6e, 0x74, 0x75, 0x20, 0x31, 0x34, 0x2e, 0x30, 0x34, 0x2e, 0x35, 0x20, 0x4c, 0x54, 0x53, 0x20, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x20, 0x33, 0x2e, 0x31, 0x33, 0x2e, 0x30, 0x2d, 0x31, 0x30, 0x36, 0x2d, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x20, 0x23, 0x31, 0x35, 0x33, 0x2d, 0x55, 0x62, 0x75, 0x6e, 0x74, 0x75, 0x20, 0x53, 0x4d, 0x50, 0x20, 0x54, 0x75, 0x65, 0x20, 0x44, 0x65, 0x63, 0x20, 0x36, 0x20, 0x31, 0x35, 0x3a, 0x34, 0x35, 0x3a, 0x31, 0x33, 0x20, 0x55, 0x54, 0x43, 0x20, 0x32, 0x30, 0x31, 0x36, 0x20, 0x69, 0x36, 0x38, 0x36, 0x0e, 0x04, 0x00, 0x9c, 0x00, 0x08, 0x10, 0x0c, 0x05, 0x01, 0x3e, 0x0c, 0xad, 0x72, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x18, 0x11, 0x02, 0x20, 0x01, 0x08, 0xa8, 0x10, 0x06, 0x00, 0x04, 0x02, 0x23, 0x54, 0xff, 0xfe, 0xc2, 0x57, 0x02, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x04, 0x65, 0x74, 0x68, 0x30, 0xfe, 0x09, 0x00, 0x12, 0x0f, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x09, 0x00, 0x12, 0x0f, 0x01, 0x03, 0xec, 0xc3, 0x00, 0x10, 0xfe, 0x40, 0x00, 0x00, 0x5e, 0x01, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x69, 0x6d, 0x72, 0x69, 0x67, 0x68, 0x74, 0x2e, 0x6d, 0x75, 0x64, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x2e, 0x77, 0x65, 0x6c, 0x6c, 0x2d, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x2f, 0x6d, 0x75, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x6f, 0x6d, 0x69, 0x74, 0x76, 0x32, 0x2e, 0x30, 0x00, 0x00]>, 'chassis-id-type': <uint32 4>, 'chassis-id': <'00:23:54:C2:57:02'>, 'port-id-type': <uint32 3>, 'port-id': <'00:23:54:C2:57:02'>, 'destination': <'nearest-bridge'>, 'port-description': <'eth0'>, 'system-name': <'upstairs.ofcourseimright.com'>, 'system-description': <'Ubuntu 14.04.5 LTS Linux 3.13.0-106-generic #153-Ubuntu SMP Tue Dec 6 15:45:13 UTC 2016 i686'>, 'system-capabilities': <uint32 156>, 'management-addresses': <[{'address-subtype': <uint32 1>, 'address': <[byte 0x3e, 0x0c, 0xad, 0x72]>, 'interface-number-subtype': <uint32 2>, 'interface-number': <uint32 2>}, {'address-subtype': <uint32 2>, 'address': <[byte 0x20, 0x01, 0x08, 0xa8, 0x10, 0x06, 0x00, 0x04, 0x02, 0x23, 0x54, 0xff, 0xfe, 0xc2, 0x57, 0x02]>, 'interface-number-subtype': <uint32 2>, 'interface-number': <uint32 2>}]>, 'ieee-802-3-mac-phy-conf': <{'autoneg': <uint32 3>, 'pmd-autoneg-cap': <uint32 60611>, 'operational-mau-type': <uint32 16>}>, 'mud-url': <'https://imright.mud.example.com/.well-known/mud/v1/vomitv2.0'>}",
|
||||
0x01, 0x80, 0xc2, 0x00, 0x00, 0x0e, /* ethernet destination */
|
||||
0x00, 0x23, 0x54, 0xc2, 0x57, 0x02, /* ethernet source */
|
||||
0x88, 0xcc, /* ethernet type */
|
||||
|
||||
0x02, 0x07, 0x04, 0x00, 0x23, 0x54, 0xc2, 0x57, 0x02, 0x04, 0x07, 0x03, 0x00, 0x23,
|
||||
0x54, 0xc2, 0x57, 0x02, 0x06, 0x02, 0x00, 0x78, 0x0a, 0x1c, 0x75, 0x70, 0x73, 0x74,
|
||||
0x61, 0x69, 0x72, 0x73, 0x2e, 0x6f, 0x66, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x69,
|
||||
0x6d, 0x72, 0x69, 0x67, 0x68, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x0c, 0x5c, 0x55, 0x62,
|
||||
0x75, 0x6e, 0x74, 0x75, 0x20, 0x31, 0x34, 0x2e, 0x30, 0x34, 0x2e, 0x35, 0x20, 0x4c,
|
||||
0x54, 0x53, 0x20, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x20, 0x33, 0x2e, 0x31, 0x33, 0x2e,
|
||||
0x30, 0x2d, 0x31, 0x30, 0x36, 0x2d, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x20,
|
||||
0x23, 0x31, 0x35, 0x33, 0x2d, 0x55, 0x62, 0x75, 0x6e, 0x74, 0x75, 0x20, 0x53, 0x4d,
|
||||
0x50, 0x20, 0x54, 0x75, 0x65, 0x20, 0x44, 0x65, 0x63, 0x20, 0x36, 0x20, 0x31, 0x35,
|
||||
0x3a, 0x34, 0x35, 0x3a, 0x31, 0x33, 0x20, 0x55, 0x54, 0x43, 0x20, 0x32, 0x30, 0x31,
|
||||
0x36, 0x20, 0x69, 0x36, 0x38, 0x36, 0x0e, 0x04, 0x00, 0x9c, 0x00, 0x08, 0x10, 0x0c,
|
||||
0x05, 0x01, 0x3e, 0x0c, 0xad, 0x72, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x18,
|
||||
0x11, 0x02, 0x20, 0x01, 0x08, 0xa8, 0x10, 0x06, 0x00, 0x04, 0x02, 0x23, 0x54, 0xff,
|
||||
0xfe, 0xc2, 0x57, 0x02, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x04, 0x65, 0x74,
|
||||
0x68, 0x30, 0xfe, 0x09, 0x00, 0x12, 0x0f, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe,
|
||||
0x09, 0x00, 0x12, 0x0f, 0x01, 0x03, 0xec, 0xc3, 0x00, 0x10, 0xfe, 0x40, 0x00, 0x00,
|
||||
0x5e, 0x01, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x69, 0x6d, 0x72, 0x69,
|
||||
0x67, 0x68, 0x74, 0x2e, 0x6d, 0x75, 0x64, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c,
|
||||
0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x2e, 0x77, 0x65, 0x6c, 0x6c, 0x2d, 0x6b, 0x6e,
|
||||
0x6f, 0x77, 0x6e, 0x2f, 0x6d, 0x75, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x6f, 0x6d,
|
||||
0x69, 0x74, 0x76, 0x32, 0x2e,
|
||||
|
||||
0x30, 0x00, 0x00, /* ethernet trailer */
|
||||
);
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
NMTstpSetupFunc const _nmtstp_setup_platform_func = nm_linux_platform_setup;
|
||||
|
||||
void
|
||||
|
@ -574,4 +608,5 @@ _nmtstp_setup_tests (void)
|
|||
g_test_add_data_func ("/lldp/parse-frames/0", &_test_recv_data0_frame0, test_parse_frames);
|
||||
g_test_add_data_func ("/lldp/parse-frames/1", &_test_recv_data1_frame0, test_parse_frames);
|
||||
g_test_add_data_func ("/lldp/parse-frames/2", &_test_recv_data2_frame0_ttl1, test_parse_frames);
|
||||
g_test_add_data_func ("/lldp/parse-frames/3", &_test_parse_frames_3, test_parse_frames);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue