From: Ben Pfaff Date: Sat, 3 Jan 2009 00:24:35 +0000 (-0800) Subject: Merge master branch into vswitchd. X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=063b6a82e7cd3e6304498f09d723be3b9c519d95;p=openvswitch Merge master branch into vswitchd. --- 063b6a82e7cd3e6304498f09d723be3b9c519d95 diff --cc secchan/in-band.c index 6069eabe,8556a6ec..46109daf --- a/secchan/in-band.c +++ b/secchan/in-band.c @@@ -167,11 -169,17 +169,17 @@@ in_band_local_packet_cb(struct relay *r && is_controller_mac(eth->eth_src, in_band)) { /* ARP sent by controller. */ out_port = OFPP_FLOOD; - } else if (is_controller_mac(eth->eth_dst, in_band) - || is_controller_mac(eth->eth_src, in_band)) { + } else if ((is_controller_mac(eth->eth_dst, in_band) + || is_controller_mac(eth->eth_src, in_band)) + && flow.dl_type == htons(ETH_TYPE_IP) + && flow.nw_proto == IP_TYPE_TCP + && (flow.tp_src == htons(OFP_TCP_PORT) + || flow.tp_src == htons(OFP_SSL_PORT) + || flow.tp_dst == htons(OFP_TCP_PORT) + || flow.tp_dst == htons(OFP_SSL_PORT))) { /* Traffic to or from controller. Switch it by hand. */ in_band_learn_mac(in_band, in_port, eth->eth_src); - out_port = mac_learning_lookup(in_band->ml, eth->eth_dst); + out_port = mac_learning_lookup(in_band->ml, eth->eth_dst, 0); } else { const uint8_t *controller_mac; controller_mac = get_controller_mac(in_band);