mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-02-12 20:30:34 +01:00
lldp: add LLDP attributes to GVariant builder without intermediate parsing (1)
The intermediate parsing step serves very little purpose. The only use is to ensure that we always add the keys in a stable order, but we can easily ensure that otherwise.
This commit is contained in:
parent
94ee6f4fe1
commit
4aa0b9180a
1 changed files with 13 additions and 26 deletions
|
|
@ -34,10 +34,6 @@ typedef enum {
|
|||
typedef enum {
|
||||
/* the order of the enum values determines the order of the fields in
|
||||
* the variant. */
|
||||
LLDP_ATTR_ID_PORT_DESCRIPTION,
|
||||
LLDP_ATTR_ID_SYSTEM_NAME,
|
||||
LLDP_ATTR_ID_SYSTEM_DESCRIPTION,
|
||||
LLDP_ATTR_ID_SYSTEM_CAPABILITIES,
|
||||
LLDP_ATTR_ID_MANAGEMENT_ADDRESSES,
|
||||
LLDP_ATTR_ID_IEEE_802_1_PVID,
|
||||
LLDP_ATTR_ID_IEEE_802_1_PPVID,
|
||||
|
|
@ -169,10 +165,6 @@ static const char *
|
|||
_lldp_attr_id_to_name (LldpAttrId attr_id)
|
||||
{
|
||||
static const char *const names[_LLDP_ATTR_ID_COUNT] = {
|
||||
[LLDP_ATTR_ID_PORT_DESCRIPTION] = NM_LLDP_ATTR_PORT_DESCRIPTION,
|
||||
[LLDP_ATTR_ID_SYSTEM_NAME] = NM_LLDP_ATTR_SYSTEM_NAME,
|
||||
[LLDP_ATTR_ID_SYSTEM_DESCRIPTION] = NM_LLDP_ATTR_SYSTEM_DESCRIPTION,
|
||||
[LLDP_ATTR_ID_SYSTEM_CAPABILITIES] = NM_LLDP_ATTR_SYSTEM_CAPABILITIES,
|
||||
[LLDP_ATTR_ID_MANAGEMENT_ADDRESSES] = NM_LLDP_ATTR_MANAGEMENT_ADDRESSES,
|
||||
[LLDP_ATTR_ID_IEEE_802_1_PVID] = NM_LLDP_ATTR_IEEE_802_1_PVID,
|
||||
[LLDP_ATTR_ID_IEEE_802_1_PPVID] = NM_LLDP_ATTR_IEEE_802_1_PPVID,
|
||||
|
|
@ -197,10 +189,6 @@ static LldpAttrType
|
|||
_lldp_attr_id_to_type (LldpAttrId attr_id)
|
||||
{
|
||||
static const LldpAttrType types[_LLDP_ATTR_ID_COUNT] = {
|
||||
[LLDP_ATTR_ID_PORT_DESCRIPTION] = LLDP_ATTR_TYPE_STRING,
|
||||
[LLDP_ATTR_ID_SYSTEM_NAME] = LLDP_ATTR_TYPE_STRING,
|
||||
[LLDP_ATTR_ID_SYSTEM_DESCRIPTION] = LLDP_ATTR_TYPE_STRING,
|
||||
[LLDP_ATTR_ID_SYSTEM_CAPABILITIES] = LLDP_ATTR_TYPE_UINT32,
|
||||
[LLDP_ATTR_ID_MANAGEMENT_ADDRESSES] = LLDP_ATTR_TYPE_ARRAY_OF_VARIANTS,
|
||||
[LLDP_ATTR_ID_IEEE_802_1_PVID] = LLDP_ATTR_TYPE_UINT32,
|
||||
[LLDP_ATTR_ID_IEEE_802_1_PPVID] = LLDP_ATTR_TYPE_UINT32,
|
||||
|
|
@ -555,24 +543,10 @@ static void
|
|||
_lldp_attrs_parse (LldpAttrs *attrs,
|
||||
sd_lldp_neighbor *neighbor_sd)
|
||||
{
|
||||
const char *str;
|
||||
uint16_t data16;
|
||||
uint8_t *data8;
|
||||
gsize len;
|
||||
int r;
|
||||
|
||||
if (sd_lldp_neighbor_get_port_description (neighbor_sd, &str) == 0)
|
||||
_lldp_attrs_set_str (attrs, LLDP_ATTR_ID_PORT_DESCRIPTION, str);
|
||||
|
||||
if (sd_lldp_neighbor_get_system_name (neighbor_sd, &str) == 0)
|
||||
_lldp_attrs_set_str (attrs, LLDP_ATTR_ID_SYSTEM_NAME, str);
|
||||
|
||||
if (sd_lldp_neighbor_get_system_description (neighbor_sd, &str) == 0)
|
||||
_lldp_attrs_set_str (attrs, LLDP_ATTR_ID_SYSTEM_DESCRIPTION, str);
|
||||
|
||||
if (sd_lldp_neighbor_get_system_capabilities (neighbor_sd, &data16) == 0)
|
||||
_lldp_attrs_set_uint32 (attrs, LLDP_ATTR_ID_SYSTEM_CAPABILITIES, data16);
|
||||
|
||||
r = sd_lldp_neighbor_tlv_rewind (neighbor_sd);
|
||||
if (r < 0) {
|
||||
nm_assert_not_reached ();
|
||||
|
|
@ -838,6 +812,7 @@ lldp_neighbor_to_variant (LldpNeighbor *neigh)
|
|||
const guint8 *raw_data;
|
||||
gsize raw_len;
|
||||
LldpAttrs attrs;
|
||||
uint16_t u16;
|
||||
|
||||
if (neigh->variant)
|
||||
return neigh->variant;
|
||||
|
|
@ -866,6 +841,18 @@ lldp_neighbor_to_variant (LldpNeighbor *neigh)
|
|||
if (str)
|
||||
nm_g_variant_builder_add_sv_str (&builder, NM_LLDP_ATTR_DESTINATION, str);
|
||||
|
||||
if (sd_lldp_neighbor_get_port_description (neigh->neighbor_sd, &str) == 0)
|
||||
nm_g_variant_builder_add_sv_str (&builder, NM_LLDP_ATTR_PORT_DESCRIPTION, str);
|
||||
|
||||
if (sd_lldp_neighbor_get_system_name (neigh->neighbor_sd, &str) == 0)
|
||||
nm_g_variant_builder_add_sv_str (&builder, NM_LLDP_ATTR_SYSTEM_NAME, str);
|
||||
|
||||
if (sd_lldp_neighbor_get_system_description (neigh->neighbor_sd, &str) == 0)
|
||||
nm_g_variant_builder_add_sv_str (&builder, NM_LLDP_ATTR_SYSTEM_DESCRIPTION, str);
|
||||
|
||||
if (sd_lldp_neighbor_get_system_capabilities (neigh->neighbor_sd, &u16) == 0)
|
||||
nm_g_variant_builder_add_sv_uint32 (&builder, NM_LLDP_ATTR_SYSTEM_CAPABILITIES, u16);
|
||||
|
||||
attrs = (LldpAttrs) { };
|
||||
|
||||
_lldp_attrs_parse (&attrs, neigh->neighbor_sd);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue