]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-lldp: introduce SD_LLDP_OUI_IANA_MUD macro
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sun, 26 Sep 2021 11:19:54 +0000 (20:19 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 27 Sep 2021 16:34:00 +0000 (01:34 +0900)
src/libsystemd-network/lldp-neighbor.c
src/network/networkd-lldp-tx.c
src/systemd/sd-lldp.h

index 7eae998a60870ef36e8ce846aa9853712495c079..342e490603c91650af34566a940a9dd3f5758164 100644 (file)
@@ -289,10 +289,9 @@ int lldp_neighbor_parse(sd_lldp_neighbor *n) {
                                                          "Found private TLV that is too short, ignoring.");
 
                         /* RFC 8520: MUD URL */
-                        if (memcmp(p, SD_LLDP_OUI_MUD, sizeof(SD_LLDP_OUI_MUD)) == 0 &&
-                            p[sizeof(SD_LLDP_OUI_MUD)] == SD_LLDP_OUI_SUBTYPE_MUD_USAGE_DESCRIPTION) {
-                                r = parse_string(n->lldp_rx, &n->mud_url, p + sizeof(SD_LLDP_OUI_MUD) + 1,
-                                                 length - 1 - sizeof(SD_LLDP_OUI_MUD));
+                        if (memcmp(p, SD_LLDP_OUI_IANA_MUD, sizeof(SD_LLDP_OUI_IANA_MUD)) == 0) {
+                                r = parse_string(n->lldp_rx, &n->mud_url, p + sizeof(SD_LLDP_OUI_IANA_MUD),
+                                                 length - sizeof(SD_LLDP_OUI_IANA_MUD));
                                 if (r < 0)
                                         return r;
                         }
index c1cbe60d73bab484ee2634ac78cbfd3d99c48fa8..1a4128600fff2192f475bc96b36a8590e5a88501 100644 (file)
@@ -146,7 +146,7 @@ static int lldp_make_packet(
 
         /* MUD URL */
         if (mud)
-                l += 2 + sizeof(SD_LLDP_OUI_MUD) + 1 + mud_length;
+                l += 2 + sizeof(SD_LLDP_OUI_IANA_MUD) + mud_length;
 
         packet = malloc(l);
         if (!packet)
@@ -199,7 +199,6 @@ static int lldp_make_packet(
         }
 
         if (mud) {
-                uint8_t oui_mud[sizeof(SD_LLDP_OUI_MUD)] = {0x00, 0x00, 0x5E};
                 /*
                  * +--------+--------+----------+---------+--------------
                  * |TLV Type|  len   |   OUI    |subtype  | MUDString
@@ -215,12 +214,11 @@ static int lldp_make_packet(
                  * o  MUDstring = the length MUST NOT exceed 255 octets
                  */
 
-                r = lldp_write_tlv_header(&p, SD_LLDP_TYPE_PRIVATE, sizeof(SD_LLDP_OUI_MUD) + 1 + mud_length);
+                r = lldp_write_tlv_header(&p, SD_LLDP_TYPE_PRIVATE, sizeof(SD_LLDP_OUI_IANA_MUD) + mud_length);
                 if (r < 0)
                         return r;
 
-                p = mempcpy(p, &oui_mud, sizeof(SD_LLDP_OUI_MUD));
-                *(p++) = SD_LLDP_OUI_SUBTYPE_MUD_USAGE_DESCRIPTION;
+                p = mempcpy(p, SD_LLDP_OUI_IANA_MUD, sizeof(SD_LLDP_OUI_IANA_MUD));
                 p = mempcpy(p, mud, mud_length);
         }
 
index d615d4046021097fc931360992109761d867ee83..c32d7894764164e5ab9debb42693f5959823579c 100644 (file)
@@ -92,8 +92,12 @@ enum {
 #define SD_LLDP_OUI_802_1 (const uint8_t[]) { 0x00, 0x80, 0xc2 }
 #define SD_LLDP_OUI_802_3 (const uint8_t[]) { 0x00, 0x12, 0x0f }
 
-#define SD_LLDP_OUI_MUD   (const uint8_t[]) { 0x00, 0x00, 0x5E }
-#define SD_LLDP_OUI_SUBTYPE_MUD_USAGE_DESCRIPTION  0x01
+#define _SD_LLDP_OUI_IANA 0x00, 0x00, 0x5E
+#define SD_LLDP_OUI_IANA  (const uint8_t[]) { _SD_LLDP_OUI_IANA }
+
+#define SD_LLDP_OUI_IANA_SUBTYPE_MUD  0x01
+#define SD_LLDP_OUI_IANA_MUD                                            \
+        (const uint8_t[]) { _SD_LLDP_OUI_IANA, SD_LLDP_OUI_IANA_SUBTYPE_MUD }
 
 /* IEEE 802.1AB-2009 Annex E */
 enum {