Merge master branch into vswitchd.
authorBen Pfaff <blp@nicira.com>
Sat, 3 Jan 2009 00:24:35 +0000 (16:24 -0800)
committerBen Pfaff <blp@nicira.com>
Sat, 3 Jan 2009 00:24:35 +0000 (16:24 -0800)
1  2 
datapath/datapath.c
datapath/datapath.h
lib/learning-switch.c
lib/ofp-print.c
lib/vlog-modules.def
secchan/in-band.c
secchan/secchan.8.in
secchan/secchan.c

Simple merge
Simple merge
Simple merge
diff --cc lib/ofp-print.c
Simple merge
Simple merge
index 6069eabe2c9e7270cc4db80ed805240a68529bac,8556a6ec4378d3462d403e9e4457e31005e013dc..46109daf19379e3f562c937dce2e179d368dc34f
@@@ -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);
Simple merge
Simple merge