lacp: Enforce valid lacp-system-id configuration.
[openvswitch] / vswitchd / bridge.c
index b45b9727d4fe8654d4072806bcf0c4a88a46542d..799124bc2b12cfb20e225cfa16e18ce70eea319b 100644 (file)
@@ -2664,9 +2664,14 @@ port_configure_lacp(struct port *port, struct lacp_settings *s)
     s->name = port->name;
 
     system_id = get_port_other_config(port->cfg, "lacp-system-id", NULL);
-    if (!system_id
-        || sscanf(system_id, ETH_ADDR_SCAN_FMT,
-                  ETH_ADDR_SCAN_ARGS(s->id)) != ETH_ADDR_SCAN_COUNT) {
+    if (system_id) {
+        if (sscanf(system_id, ETH_ADDR_SCAN_FMT,
+                   ETH_ADDR_SCAN_ARGS(s->id)) != ETH_ADDR_SCAN_COUNT) {
+            VLOG_WARN("port %s: LACP system ID (%s) must be an Ethernet"
+                      " address.", port->name, system_id);
+            return NULL;
+        }
+    } else {
         memcpy(s->id, port->bridge->ea, ETH_ADDR_LEN);
     }