struct list node; /* Node in global list of bridges. */
char *name; /* User-specified arbitrary name. */
struct mac_learning *ml; /* MAC learning table, or null not to learn. */
- int flow_idle_time; /* Idle time for flows we set up. */
bool sent_config_request; /* Successfully sent config request? */
uint8_t default_ea[ETH_ADDR_LEN]; /* Default MAC. */
br->name = xstrdup(name);
br->ml = mac_learning_create();
- br->flow_idle_time = 5;
br->sent_config_request = false;
eth_addr_random(br->default_ea);
compose_actions(br, flow, vlan, in_port, out_port, tags, actions);
/*
- * We send out only a single packet, instead of setting up a flow, if:
- *
- * - Flows are disabled entirely; or
- *
- * - The packet is an ARP directed to broadcast that arrived on a bonded
- * interface. In such a situation ARP requests and replies must be
- * handled differently, but OpenFlow unfortunately can't distinguish
- * them.
+ * We send out only a single packet, instead of setting up a flow, if the
+ * packet is an ARP directed to broadcast that arrived on a bonded
+ * interface. In such a situation ARP requests and replies must be handled
+ * differently, but OpenFlow unfortunately can't distinguish them.
*/
- return (br->flow_idle_time >= 0
- && (in_port->n_ifaces < 2
- || flow->dl_type != htons(ETH_TYPE_ARP)
- || !eth_addr_is_broadcast(flow->dl_dst)));
+ return (in_port->n_ifaces < 2
+ || flow->dl_type != htons(ETH_TYPE_ARP)
+ || !eth_addr_is_broadcast(flow->dl_dst));
}
/* Careful: 'opp' is in host byte order and opp->port_no is an OFP port