[ovs-dev] [PATCH 1/3] ofproto: Remove support for OpenFlow-based management protocol.

Ben Pfaff blp at nicira.com
Tue Jan 26 19:43:53 UTC 2010


Older versions of Open vSwitch supported a management protocol based on
OpenFlow message framing.  The current Open vSwitch instead uses the
OVSDB protocol for the same purposes.  We don't plan to support this older
protocol any longer, so this commit deletes support.

This commit also deletes the management_id column from the vswitch's
database schema.  The management_id was used by the older management
protocol to match up OpenFlow switch connections to management connections,
but the current implementation instead matches up connections based on
the datapath IDs exported by the configuration database.  In fact, the
OpenFlow connections had no way to actually export the management ID, so
this just deletes code that was essentially without function anyhow.
---
 include/openflow/automake.mk     |    1 -
 include/openflow/nicira-ext.h    |    4 +-
 include/openflow/openflow-mgmt.h |  260 --------------------------------------
 lib/vlog-modules.def             |    3 +-
 ofproto/ofproto.c                |   69 ----------
 ofproto/ofproto.h                |    4 +-
 ofproto/status.c                 |    9 +-
 utilities/ovs-openflowd.8.in     |    8 --
 utilities/ovs-openflowd.c        |   22 ----
 utilities/ovs-vsctl.c            |    1 -
 vswitchd/bridge.c                |    4 -
 vswitchd/vswitch.ovsschema       |    3 -
 12 files changed, 6 insertions(+), 382 deletions(-)
 delete mode 100644 include/openflow/openflow-mgmt.h

diff --git a/include/openflow/automake.mk b/include/openflow/automake.mk
index 146f9c4..b8dbc71 100644
--- a/include/openflow/automake.mk
+++ b/include/openflow/automake.mk
@@ -1,5 +1,4 @@
 noinst_HEADERS += \
-	include/openflow/openflow-mgmt.h \
 	include/openflow/nicira-ext.h \
 	include/openflow/openflow.h
 
diff --git a/include/openflow/nicira-ext.h b/include/openflow/nicira-ext.h
index c2cd1ef..a62f59e 100644
--- a/include/openflow/nicira-ext.h
+++ b/include/openflow/nicira-ext.h
@@ -56,8 +56,8 @@ enum nicira_type {
     /* No longer used. */
     NXT_FLOW_END__OBSOLETE,
 
-    /* Management protocol.  See "openflow-mgmt.h". */
-    NXT_MGMT,
+    /* No longer used. */
+    NXT_MGMT__OBSOLETE,
 };
 
 struct nicira_header {
diff --git a/include/openflow/openflow-mgmt.h b/include/openflow/openflow-mgmt.h
deleted file mode 100644
index 04017d4..0000000
--- a/include/openflow/openflow-mgmt.h
+++ /dev/null
@@ -1,260 +0,0 @@
-/*
- * Copyright (c) 2009 Nicira Networks.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef OPENFLOW_OPENFLOW_MGMT_H
-#define OPENFLOW_OPENFLOW_MGMT_H 1
-
-#include "openflow/nicira-ext.h"
-
-enum ofmp_type {
-    OFMPT_CAPABILITY_REQUEST,
-    OFMPT_CAPABILITY_REPLY,
-    OFMPT_RESOURCES_REQUEST,
-    OFMPT_RESOURCES_UPDATE,
-    OFMPT_CONFIG_REQUEST,
-    OFMPT_CONFIG_UPDATE,
-    OFMPT_CONFIG_UPDATE_ACK,
-    OFMPT_ERROR,
-    OFMPT_EXTENDED_DATA
-};
-
-/* Header on all OpenFlow management packets. */
-struct ofmp_header {
-    struct nicira_header header;
-    uint16_t type;           /* One of OFMPT_* above. */
-    uint8_t pad[2];
-};
-OFP_ASSERT(sizeof(struct ofmp_header) == sizeof(struct nicira_header) + 4);
-
-
-/* Generic TLV header. */
-struct ofmp_tlv {
-    uint16_t type;        /* Type of value (one of OFMPTLV_*). */
-    uint16_t len;         /* Length of TLV (includes this header). */
-    uint8_t data[0];      /* Value of data as defined by type and length. */
-};
-OFP_ASSERT(sizeof(struct ofmp_tlv) == 4);
-
-/* Universal TLV terminator.  Used to indicate end of TLV list. */
-struct ofmp_tlv_end {
-    uint16_t type;        /* Type is 0. */
-    uint16_t len;         /* Length is 4. */
-};
-OFP_ASSERT(sizeof(struct ofmp_tlv_end) == 4);
-
-
-/* Bitmask of capability description styles. */
-enum ofmp_capability_format {
-    OFMPCAF_SIMPLE  = 0 << 0,             /* "ovs-vswitchd.conf" style. */
-};
-
-/* Body of capbility request.
- *
- * OFMPT_CAPABILITY_REQUEST (controller -> switch) */
-struct ofmp_capability_request {
-    struct ofmp_header header;
-    uint32_t format;                      /* One of OFMPCAF_*. */
-};
-OFP_ASSERT(sizeof(struct ofmp_capability_request) == 24);
-
-/* Body of reply to capability request.  
- *
- * OFMPT_CAPABILITY_REPLY (switch -> controller). */
-struct ofmp_capability_reply {
-    struct ofmp_header header;
-    uint32_t format;                      /* One of OFMPCAF_*. */
-    uint64_t mgmt_id;                     /* Management ID. */
-    uint8_t data[0];
-};
-OFP_ASSERT(sizeof(struct ofmp_capability_reply) == 32);
-
-
-/* Resource TLV for datapath description. */
-struct ofmptsr_dp {
-    uint16_t type;                        /* OFMPTSR_DP. */
-    uint16_t len;                         /* 32. */
-    uint8_t pad[4];
-    uint64_t dp_id;                       /* Datapath ID. */
-    uint8_t name[OFP_MAX_PORT_NAME_LEN];  /* Null-terminated name. */
-};
-OFP_ASSERT(sizeof(struct ofmptsr_dp) == 32);
-
-/* UUIDs will be passed around as *non-terminated* strings in their
- * canonical form (e.g., 550e8400-e29b-41d4-a716-446655440000).
- */
-#define OFMP_UUID_LEN 36
-
-/* Resource TLV for XenServer UUIDs associated with this datapath. */
-struct ofmptsr_dp_uuid {
-    uint16_t type;                        /* OFMPTSR_DP_UUID. */
-    uint16_t len;                         /* Length. */
-    uint8_t pad[4];
-    uint64_t dp_id;                       /* Datapath ID. */
-    uint8_t uuid_list[0];                 /* List of UUIDs associated with 
-                                           * this datapath. */
-};
-OFP_ASSERT(sizeof(struct ofmptsr_dp_uuid) == 16);
-
-/* Resource TLV for XenServer UUID associated with this managment 
- * instance. 
- */
-struct ofmptsr_mgmt_uuid {
-    uint16_t type;                        /* OFMPTSR_MGMT_UUID. */
-    uint16_t len;                         /* 52. */
-    uint8_t pad[4];
-    uint64_t mgmt_id;                     /* Management ID. */
-    uint8_t uuid[OFMP_UUID_LEN];          /* System UUID. */
-    uint8_t pad2[4];                      /* Pad for 64-bit systems. */
-};
-OFP_ASSERT(sizeof(struct ofmptsr_mgmt_uuid) == 56);
-
-/* Resource TLV for details about this XenServer vif. */
-struct ofmptsr_vif {
-    uint16_t type;                        /* OFMPTSR_VIF. */
-    uint16_t len;                         /* 136. */
-    uint8_t name[OFP_MAX_PORT_NAME_LEN];  /* Null-terminated name. */
-    uint8_t vif_uuid[OFMP_UUID_LEN];      /* VIF UUID. */
-    uint8_t vm_uuid[OFMP_UUID_LEN];       /* VM UUID. */
-    uint8_t net_uuid[OFMP_UUID_LEN];      /* Network UUID. */
-    uint64_t vif_mac;                     /* Management ID. */
-};
-OFP_ASSERT(sizeof(struct ofmptsr_vif) == 136);
-
-/* TLV types for switch resource descriptions. */
-enum ofmp_switch_resources {
-    OFMPTSR_END = 0,                      /* Terminator. */
-    OFMPTSR_DP,                           /* Datapath. */
-    OFMPTSR_DP_UUID,                      /* Xen: datapath uuid's. */
-    OFMPTSR_MGMT_UUID,                    /* Xen: management uuid. */
-    OFMPTSR_VIF,                          /* Xen: vif details. */
-};
-
-/* Body of resources request.
- *
- * OFMPT_RESOURCES_REQUEST (controller -> switch) */
-struct ofmp_resources_request {
-    struct ofmp_header header;
-};
-
-/* Body of capbility update.  Sent in response to a resources request or
- * sent asynchronously when resources change on the switch. 
- *
- * OFMPT_RESOURCES_UPDATE (switch -> controller) */
-struct ofmp_resources_update {
-    struct ofmp_header header;
-    uint8_t data[0];
-};
-OFP_ASSERT(sizeof(struct ofmp_resources_update) == 20);
-
-
-/* Bitmask of capability description styles. */
-enum ofmp_config_format {
-    OFMPCOF_SIMPLE  = 0 << 0,           /* "ovs-vswitchd.conf" style. */
-};
-
-#define CONFIG_COOKIE_LEN 20
-
-/* Body of configuration request.
- *
- * OFMPT_CONFIG_REQUEST (controller -> switch) */
-struct ofmp_config_request {
-    struct ofmp_header header;
-    uint32_t format;                    /* One of OFMPCOF_*. */
-};
-OFP_ASSERT(sizeof(struct ofmp_config_request) == 24);
-
-/* Body of configuration update.  Sent in response to a configuration 
- * request from the controller.  May be sent asynchronously by either
- * the controller or switch to modify configuration or notify of
- * changes, respectively.  If sent by the controller, the switch must
- * respond with a OFMPT_CONFIG_UPDATE_ACK.
- *
- * OFMPT_CONFIG_UPDATE (switch <-> controller) */
-struct ofmp_config_update {
-    struct ofmp_header header;
-    uint32_t format;                    /* One of OFMPCOF_*. */
-    uint8_t cookie[CONFIG_COOKIE_LEN];  /* Cookie of config attempting to be
-                                         * replaced by this update. */
-    uint8_t data[0];
-};
-OFP_ASSERT(sizeof(struct ofmp_config_update) == 44);
-
-/* Bitmask of configuration update ack flags. */
-enum ofmp_config_update_ack_flags {
-    OFMPCUAF_SUCCESS = 1 << 0,          /* Config succeeded. */
-};
-
-/* Body of configuration update ack.  Sent in response to a configuration 
- * udpate request.
- *
- * OFMPT_CONFIG_UPDATE_ACK (switch -> controller) */
-struct ofmp_config_update_ack {
-    struct ofmp_header header;
-    uint32_t format;                    /* One of OFMPCOF_*. */
-    uint32_t flags;                     /* One of OFMPCUAF_*. */
-    uint8_t cookie[CONFIG_COOKIE_LEN];  /* Cookie of current configuration 
-                                         * being used in the switch. */
-};
-OFP_ASSERT(sizeof(struct ofmp_config_update_ack) == 48);
-
-/* Values for 'type' in ofmp_error_msg. */
-enum ofmp_error_type {
-    OFMPET_BAD_CONFIG                   /* Problem with configuration. */
-};
-
-/* ofmp_error_msg 'code' values for OFMPET_BAD_CONFIG.  'data' contains
- * at least the first 64 bytes of the failed request. */
-enum ofmp_bad_config_code {
-    OFMPBCC_BUSY,                       /* Config updating, try again. */
-    OFMPBCC_OLD_COOKIE,                 /* Config has changed. */
-};
-
-/* Body of error message.  May be sent by either the switch or the
- * controller to indicate some error condition.
- *
- * OFMPT_ERROR (switch <-> controller) */
-struct ofmp_error_msg {
-    struct ofmp_header header;
-
-    uint16_t type;            /* One of OFMPET_*. */
-    uint16_t code;            /* Code depending on 'type'. */
-    uint8_t data[0];          /* Variable-length data.  Interpreted based 
-                                 on the type and code. */
-};
-OFP_ASSERT(sizeof(struct ofmp_error_msg) == 24);
-
-/* Bitmask of extended data message flags. */
-enum ofmp_extended_data_flags {
-    OFMPEDF_MORE_DATA = 1 << 0,         /* More data follows. */
-};
-
-/* Body of extended data message.  May be sent by either the switch or the
- * controller to send messages that are greater than 65535 bytes in
- * length.  The OpenFlow transaction id (xid) must be the same for all
- * the individual OpenFlow messages that make up an extended message.
- *
- * OFMPT_EXTENDED_DATA (switch <-> controller) */
-struct ofmp_extended_data {
-    struct ofmp_header header;
-
-    uint16_t type;            /* Type code of the encapsulated message. */
-    uint8_t flags;            /* One of OFMPEDF_*. */
-    uint8_t pad;
-    uint8_t data[0];          /* Variable-length data. */
-};
-OFP_ASSERT(sizeof(struct ofmp_extended_data) == 24);
-
-#endif /* openflow/openflow-mgmt.h */
diff --git a/lib/vlog-modules.def b/lib/vlog-modules.def
index d1c16a6..8506516 100644
--- a/lib/vlog-modules.def
+++ b/lib/vlog-modules.def
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009 Nicira Networks.
+ * Copyright (c) 2008, 2009, 2010 Nicira Networks.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -42,7 +42,6 @@ VLOG_MODULE(leak_checker)
 VLOG_MODULE(learning_switch)
 VLOG_MODULE(lockfile)
 VLOG_MODULE(mac_learning)
-VLOG_MODULE(mgmt)
 VLOG_MODULE(netdev)
 VLOG_MODULE(netdev_linux)
 VLOG_MODULE(netflow)
diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c
index 46b577a..59cc3e7 100644
--- a/ofproto/ofproto.c
+++ b/ofproto/ofproto.c
@@ -37,7 +37,6 @@
 #include "ofpbuf.h"
 #include "openflow/nicira-ext.h"
 #include "openflow/openflow.h"
-#include "openflow/openflow-mgmt.h"
 #include "openvswitch/datapath-protocol.h"
 #include "packets.h"
 #include "pinsched.h"
@@ -185,7 +184,6 @@ struct ofproto {
     /* Settings. */
     uint64_t datapath_id;       /* Datapath ID. */
     uint64_t fallback_dpid;     /* Datapath ID if no better choice found. */
-    uint64_t mgmt_id;           /* Management channel identifier. */
     char *manufacturer;         /* Manufacturer. */
     char *hardware;             /* Hardware. */
     char *software;             /* Software version. */
@@ -365,12 +363,6 @@ ofproto_set_datapath_id(struct ofproto *p, uint64_t datapath_id)
 }
 
 void
-ofproto_set_mgmt_id(struct ofproto *p, uint64_t mgmt_id)
-{
-    p->mgmt_id = mgmt_id;
-}
-
-void
 ofproto_set_probe_interval(struct ofproto *p, int probe_interval)
 {
     probe_interval = probe_interval ? MAX(probe_interval, 5) : 0;
@@ -599,12 +591,6 @@ ofproto_get_datapath_id(const struct ofproto *ofproto)
     return ofproto->datapath_id;
 }
 
-uint64_t
-ofproto_get_mgmt_id(const struct ofproto *ofproto)
-{
-    return ofproto->mgmt_id;
-}
-
 int
 ofproto_get_probe_interval(const struct ofproto *ofproto)
 {
@@ -2921,58 +2907,6 @@ handle_flow_mod(struct ofproto *p, struct ofconn *ofconn,
     }
 }
 
-static void
-send_capability_reply(struct ofproto *p, struct ofconn *ofconn, uint32_t xid)
-{
-    struct ofmp_capability_reply *ocr;
-    struct ofpbuf *b;
-    char capabilities[] = "com.nicira.mgmt.manager=false\n";
-
-    ocr = make_openflow_xid(sizeof(*ocr), OFPT_VENDOR, xid, &b);
-    ocr->header.header.vendor = htonl(NX_VENDOR_ID);
-    ocr->header.header.subtype = htonl(NXT_MGMT);
-    ocr->header.type = htons(OFMPT_CAPABILITY_REPLY);
-
-    ocr->format = htonl(OFMPCOF_SIMPLE);
-    ocr->mgmt_id = htonll(p->mgmt_id);
-
-    ofpbuf_put(b, capabilities, strlen(capabilities));
-
-    queue_tx(b, ofconn, ofconn->reply_counter);
-}
-
-static int
-handle_ofmp(struct ofproto *p, struct ofconn *ofconn, 
-            struct ofmp_header *ofmph)
-{
-    size_t msg_len = ntohs(ofmph->header.header.length);
-    if (msg_len < sizeof(*ofmph)) {
-        VLOG_WARN_RL(&rl, "dropping short managment message: %zu\n", msg_len);
-        return ofp_mkerr(OFPET_BAD_REQUEST, OFPBRC_BAD_LENGTH);
-    }
-
-    if (ofmph->type == htons(OFMPT_CAPABILITY_REQUEST)) {
-        struct ofmp_capability_request *ofmpcr;
-
-        if (msg_len < sizeof(struct ofmp_capability_request)) {
-            VLOG_WARN_RL(&rl, "dropping short capability request: %zu\n",
-                    msg_len);
-            return ofp_mkerr(OFPET_BAD_REQUEST, OFPBRC_BAD_LENGTH);
-        }
-
-        ofmpcr = (struct ofmp_capability_request *)ofmph;
-        if (ofmpcr->format != htonl(OFMPCAF_SIMPLE)) {
-            /* xxx Find a better type than bad subtype */
-            return ofp_mkerr(OFPET_BAD_REQUEST, OFPBRC_BAD_SUBTYPE);
-        }
-
-        send_capability_reply(p, ofconn, ofmph->header.header.xid);
-        return 0;
-    } else {
-        return ofp_mkerr(OFPET_BAD_REQUEST, OFPBRC_BAD_SUBTYPE);
-    }
-}
-
 static int
 handle_vendor(struct ofproto *p, struct ofconn *ofconn, void *msg)
 {
@@ -3000,9 +2934,6 @@ handle_vendor(struct ofproto *p, struct ofconn *ofconn, void *msg)
 
     case NXT_ACT_GET_CONFIG:
         return ofp_mkerr(OFPET_BAD_REQUEST, OFPBRC_BAD_SUBTYPE); /* XXX */
-
-    case NXT_MGMT:
-        return handle_ofmp(p, ofconn, msg);
     }
 
     return ofp_mkerr(OFPET_BAD_REQUEST, OFPBRC_BAD_SUBTYPE);
diff --git a/ofproto/ofproto.h b/ofproto/ofproto.h
index 5fe8d77..91b8688 100644
--- a/ofproto/ofproto.h
+++ b/ofproto/ofproto.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009 Nicira Networks.
+ * Copyright (c) 2009, 2010 Nicira Networks.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -47,7 +47,6 @@ bool ofproto_is_alive(const struct ofproto *);
 
 /* Configuration. */
 void ofproto_set_datapath_id(struct ofproto *, uint64_t datapath_id);
-void ofproto_set_mgmt_id(struct ofproto *, uint64_t mgmt_id);
 void ofproto_set_probe_interval(struct ofproto *, int probe_interval);
 void ofproto_set_max_backoff(struct ofproto *, int max_backoff);
 void ofproto_set_desc(struct ofproto *,
@@ -68,7 +67,6 @@ int ofproto_set_stp(struct ofproto *, bool enable_stp);
 
 /* Configuration querying. */
 uint64_t ofproto_get_datapath_id(const struct ofproto *);
-uint64_t ofproto_get_mgmt_id(const struct ofproto *);
 int ofproto_get_probe_interval(const struct ofproto *);
 int ofproto_get_max_backoff(const struct ofproto *);
 bool ofproto_get_in_band(const struct ofproto *);
diff --git a/ofproto/status.c b/ofproto/status.c
index 5e61888..1b13e65 100644
--- a/ofproto/status.c
+++ b/ofproto/status.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009 Nicira Networks.
+ * Copyright (c) 2008, 2009, 2010 Nicira Networks.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -130,7 +130,7 @@ static void
 config_status_cb(struct status_reply *sr, void *ofproto_)
 {
     const struct ofproto *ofproto = ofproto_;
-    uint64_t datapath_id, mgmt_id;
+    uint64_t datapath_id;
     struct svec listeners;
     int probe_interval, max_backoff;
     size_t i;
@@ -140,11 +140,6 @@ config_status_cb(struct status_reply *sr, void *ofproto_)
         status_reply_put(sr, "datapath-id=%"PRIx64, datapath_id);
     }
 
-    mgmt_id = ofproto_get_mgmt_id(ofproto);
-    if (mgmt_id) {
-        status_reply_put(sr, "mgmt-id=%"PRIx64, mgmt_id);
-    }
-
     svec_init(&listeners);
     ofproto_get_listeners(ofproto, &listeners);
     for (i = 0; i < listeners.n; i++) {
diff --git a/utilities/ovs-openflowd.8.in b/utilities/ovs-openflowd.8.in
index 208cd87..2441279 100644
--- a/utilities/ovs-openflowd.8.in
+++ b/utilities/ovs-openflowd.8.in
@@ -205,14 +205,6 @@ Ethernet address of the datapath's local port (which is typically
 randomly generated).
 
 .TP
-\fB--mgmt-id=\fImgmtid\fR
-Sets \fImgmtid\fR, which must consist of exactly 12 hexadecimal
-digits, as the switch's management ID.
-
-If this option is omitted, the management ID defaults to 0, signaling
-to the controller that management is supported but not configured.
-
-.TP
 \fB--fail=\fR[\fBopen\fR|\fBclosed\fR]
 The controller is, ordinarily, responsible for setting up all flows on
 the OpenFlow switch.  Thus, if the connection to the controller fails,
diff --git a/utilities/ovs-openflowd.c b/utilities/ovs-openflowd.c
index e0cfdc9..a6f1058 100644
--- a/utilities/ovs-openflowd.c
+++ b/utilities/ovs-openflowd.c
@@ -93,9 +93,6 @@ struct ofsettings {
     /* Spanning tree protocol. */
     bool enable_stp;
 
-    /* Management. */
-    uint64_t mgmt_id;           /* Management ID. */
-
     /* NetFlow. */
     struct svec netflow;        /* NetFlow targets. */
 };
@@ -168,9 +165,6 @@ main(int argc, char *argv[])
     if (s.datapath_id) {
         ofproto_set_datapath_id(ofproto, s.datapath_id);
     }
-    if (s.mgmt_id) {
-        ofproto_set_mgmt_id(ofproto, s.mgmt_id);
-    }
     ofproto_set_desc(ofproto, s.mfr_desc, s.hw_desc, s.sw_desc, s.serial_desc);
     if (!s.listeners.n) {
         svec_add_nocopy(&s.listeners, xasprintf("punix:%s/%s.mgmt",
@@ -284,7 +278,6 @@ parse_options(int argc, char *argv[], struct ofsettings *s)
         {"out-of-band", no_argument, 0, OPT_OUT_OF_BAND},
         {"in-band",     no_argument, 0, OPT_IN_BAND},
         {"netflow",     required_argument, 0, OPT_NETFLOW},
-        {"mgmt-id",     required_argument, 0, OPT_MGMT_ID},
         {"ports",       required_argument, 0, OPT_PORTS},
         {"verbose",     optional_argument, 0, 'v'},
         {"help",        no_argument, 0, 'h'},
@@ -319,7 +312,6 @@ parse_options(int argc, char *argv[], struct ofsettings *s)
     s->enable_stp = false;
     s->in_band = true;
     svec_init(&s->netflow);
-    s->mgmt_id = 0;
     svec_init(&s->ports);
     for (;;) {
         int c;
@@ -437,18 +429,6 @@ parse_options(int argc, char *argv[], struct ofsettings *s)
             svec_add(&s->netflow, optarg);
             break;
 
-        case OPT_MGMT_ID:
-            if (strlen(optarg) != 12
-                || strspn(optarg, "0123456789abcdefABCDEF") != 12) {
-                ovs_fatal(0, "argument to --mgmt-id must be "
-                          "exactly 12 hex digits");
-            }
-            s->mgmt_id = strtoll(optarg, NULL, 16);
-            if (!s->mgmt_id) {
-                ovs_fatal(0, "argument to --mgmt-id must be nonzero");
-            }
-            break;
-
         case 'l':
             svec_add(&s->listeners, optarg);
             break;
@@ -533,8 +513,6 @@ usage(void)
     printf("\nOpenFlow options:\n"
            "  -d, --datapath-id=ID    Use ID as the OpenFlow switch ID\n"
            "                          (ID must consist of 12 hex digits)\n"
-           "  --mgmt-id=ID            Use ID as the management ID\n"
-           "                          (ID must consist of 12 hex digits)\n"
            "  --manufacturer=MFR      Identify manufacturer as MFR\n"
            "  --hardware=HW           Identify hardware as HW\n"
            "  --software=SW           Identify software as SW\n"
diff --git a/utilities/ovs-vsctl.c b/utilities/ovs-vsctl.c
index 13aba18..87a8cea 100644
--- a/utilities/ovs-vsctl.c
+++ b/utilities/ovs-vsctl.c
@@ -1564,7 +1564,6 @@ static const struct vsctl_column open_vswitch_columns[] = {
     {&ovsrec_open_vswitch_col_bridges, VSCF_READONLY, NULL},
     {&ovsrec_open_vswitch_col_controller, VSCF_READONLY, NULL},
     {&ovsrec_open_vswitch_col_cur_cfg, VSCF_HIDDEN, NULL},
-    {&ovsrec_open_vswitch_col_management_id, 0, "[0-9a-fA-F]{12}"},
     {&ovsrec_open_vswitch_col_managers, 0, "p?(ssl|tcp|unix):.*"},
     {&ovsrec_open_vswitch_col_next_cfg, VSCF_HIDDEN, NULL},
     {&ovsrec_open_vswitch_col_ssl, VSCF_READONLY, NULL},
diff --git a/vswitchd/bridge.c b/vswitchd/bridge.c
index a09f343..81ea49e 100644
--- a/vswitchd/bridge.c
+++ b/vswitchd/bridge.c
@@ -1247,7 +1247,6 @@ bridge_reconfigure_one(const struct ovsrec_open_vswitch *ovs_cfg,
     struct svec listeners, old_listeners;
     struct svec snoops, old_snoops;
     struct shash_node *node;
-    uint64_t mgmt_id;
     size_t i;
 
     /* Collect old ports. */
@@ -1283,9 +1282,6 @@ bridge_reconfigure_one(const struct ovsrec_open_vswitch *ovs_cfg,
         }
     }
 
-    dpid_from_string(ovs_cfg->management_id, &mgmt_id);
-    ofproto_set_mgmt_id(br->ofproto, mgmt_id);
-
     /* Get rid of deleted ports and add new ports. */
     SHASH_FOR_EACH (node, &old_ports) {
         if (!shash_find(&new_ports, node->name)) {
diff --git a/vswitchd/vswitch.ovsschema b/vswitchd/vswitch.ovsschema
index 2c7fdf1..38f4806 100644
--- a/vswitchd/vswitch.ovsschema
+++ b/vswitchd/vswitch.ovsschema
@@ -7,9 +7,6 @@
        "bridges": {
          "comment": "Set of bridges managed by the daemon.",
          "type": {"key": "uuid", "min": 0, "max": "unlimited"}},
-       "management_id": {
-         "comment": "Exactly 12 hex digits that identify the daemon.",
-         "type": "string"},
        "controller": {
          "comment": "Default Controller used by bridges.",
          "type": {"key": "uuid", "min": 0, "max": 1}},
-- 
1.6.3.3





More information about the dev mailing list