X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=vswitchd%2Fbridge.c;h=3faeee1e897869faacaa26f1f3d8df1e8f904f8c;hb=d825e2a5dcc5193067215cbf2466417cebebab9b;hp=ff2745ef1c499bcd18b8132568d4a914aa32eed2;hpb=a7d790694580d959271fe97d108d9d03d9a89983;p=openvswitch diff --git a/vswitchd/bridge.c b/vswitchd/bridge.c index ff2745ef..3faeee1e 100644 --- a/vswitchd/bridge.c +++ b/vswitchd/bridge.c @@ -791,7 +791,7 @@ iface_set_ofp_port(struct iface *iface, int ofp_port) assert(iface->ofp_port < 0 && ofp_port >= 0); iface->ofp_port = ofp_port; hmap_insert(&br->ifaces, &iface->ofp_port_node, hash_int(ofp_port, 0)); - + iface_set_ofport(iface->cfg, ofp_port); } static void @@ -1629,7 +1629,11 @@ bridge_create(const struct ovsrec_bridge *br_cfg) br->name = xstrdup(br_cfg->name); br->type = xstrdup(ofproto_normalize_type(br_cfg->datapath_type)); br->cfg = br_cfg; - eth_addr_nicira_random(br->default_ea); + + /* Derive the default Ethernet address from the bridge's UUID. This should + * be unique and it will be stable between ovs-vswitchd runs. */ + memcpy(br->default_ea, &br_cfg->header_.uuid, ETH_ADDR_LEN); + eth_addr_mark_random(br->default_ea); hmap_init(&br->ports); hmap_init(&br->ifaces);