@@ -94,6 +94,7 @@ struct netdev {
struct shash_node *node; /* Pointer to element in global map. */
struct ovs_list saved_flags_list; /* Contains "struct netdev_saved_flags". */
struct netdev_hw_info hw_info; /* offload-capable netdev info */
+ struct netdev *peer; /* peer netdev if exists */
};
static inline void
@@ -926,6 +926,11 @@ netdev_get_peer_name(const struct netdev *netdev)
return peer;
}
+void netdev_set_peer_netdev(struct netdev *netdev, struct netdev *peer_netdev)
+{
+ netdev->peer = peer_netdev;
+}
+
/* Retrieves the MTU of 'netdev'. The MTU is the maximum size of transmitted
* (and received) packets, in bytes, not including the hardware header; thus,
* this is typically 1500 bytes for Ethernet devices.
@@ -171,6 +171,7 @@ int netdev_get_numa_id(const struct netdev *);
/* Basic properties. */
const char *netdev_get_name(const struct netdev *);
char *netdev_get_peer_name(const struct netdev *);
+void netdev_set_peer_netdev(struct netdev *, struct netdev *);
const char *netdev_get_type(const struct netdev *);
const char *netdev_get_type_from_name(const char *);
int netdev_get_mtu(const struct netdev *, int *mtup);
@@ -3548,6 +3548,8 @@ ofport_update_peer(struct ofport_dpif *ofport)
peer_peer)) {
ofport->peer = peer;
ofport->peer->peer = ofport;
+ netdev_set_peer_netdev(ofport->up.netdev, peer->up.netdev);
+ netdev_set_peer_netdev(peer->up.netdev, ofport->up.netdev);
}
free(peer_peer);