Global replace of Nicira Networks.
[sliver-openvswitch.git] / lib / bond.h
index b2ab89c..7329db7 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, 2010, 2011 Nicira Networks.
+ * Copyright (c) 2008, 2009, 2010, 2011 Nicira, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -26,6 +26,7 @@
 struct flow;
 struct netdev;
 struct ofpbuf;
+enum lacp_status;
 
 /* How flows are balanced among bond slaves. */
 enum bond_mode {
@@ -38,26 +39,17 @@ enum bond_mode {
 bool bond_mode_from_string(enum bond_mode *, const char *);
 const char *bond_mode_to_string(enum bond_mode);
 
-/* How to detect link status. */
-enum bond_detect_mode {
-    BLSM_CARRIER,               /* Use carrier. */
-    BLSM_MIIMON                 /* Poll MII status. */
-};
-
-bool bond_detect_mode_from_string(enum bond_detect_mode *, const char *);
-const char *bond_detect_mode_to_string(enum bond_detect_mode);
-
 /* Configuration for a bond as a whole. */
 struct bond_settings {
     char *name;                 /* Bond's name, for log messages. */
+    uint32_t basis;             /* Flow hashing basis. */
 
     /* Balancing configuration. */
     enum bond_mode balance;
-    int rebalance_interval;     /* Milliseconds between rebalances. */
+    int rebalance_interval;     /* Milliseconds between rebalances.
+                                   Zero to disable rebalancing. */
 
     /* Link status detection. */
-    enum bond_detect_mode detect; /* BLSM_CARRIER or BLSM_MIIMON. */
-    int miimon_interval;        /* Used only for BLSM_MIIMON. */
     int up_delay;               /* ms before enabling an up slave. */
     int down_delay;             /* ms before disabling a down slave. */
 
@@ -74,21 +66,20 @@ void bond_destroy(struct bond *);
 
 bool bond_reconfigure(struct bond *, const struct bond_settings *);
 void bond_slave_register(struct bond *, void *slave_,
-                         uint16_t stable_id, struct netdev *);
+                         uint32_t stable_id, struct netdev *);
+void bond_slave_set_netdev(struct bond *, void *slave_, struct netdev *);
 void bond_slave_unregister(struct bond *, const void *slave);
 
-void bond_run(struct bond *, struct tag_set *, bool lacp_negotiated);
+void bond_run(struct bond *, struct tag_set *, enum lacp_status);
 void bond_wait(struct bond *);
 
-/* LACP. */
-void bond_slave_set_lacp_may_enable(struct bond *, void *slave_,
-                                    bool may_enable);
+void bond_slave_set_may_enable(struct bond *, void *slave_, bool may_enable);
 
 /* Special MAC learning support for SLB bonding. */
 bool bond_should_send_learning_packets(struct bond *);
-int bond_send_learning_packet(struct bond *,
-                              const uint8_t eth_src[ETH_ADDR_LEN],
-                              uint16_t vlan);
+struct ofpbuf *bond_compose_learning_packet(struct bond *,
+                                            const uint8_t eth_src[ETH_ADDR_LEN],
+                                            uint16_t vlan, void **port_aux);
 
 /* Packet processing. */
 enum bond_verdict {