I had intended to fold this into a previous patch.

Signed-off-by: Ethan Jackson <et...@nicira.com>
---
 ofproto/ofproto-dpif-xlate.c |   25 ++++++++++++-------------
 1 file changed, 12 insertions(+), 13 deletions(-)

diff --git a/ofproto/ofproto-dpif-xlate.c b/ofproto/ofproto-dpif-xlate.c
index bba4355..f7aa01d 100644
--- a/ofproto/ofproto-dpif-xlate.c
+++ b/ofproto/ofproto-dpif-xlate.c
@@ -501,25 +501,26 @@ xport_lookup(struct ofport_dpif *ofport)
     return NULL;
 }
 
+static struct stp_port *
+xport_get_stp_port(const struct xport *xport)
+{
+    return xport->xbridge->stp && xport->stp_port_no
+        ? stp_get_port(xport->xbridge->stp, xport->stp_port_no)
+        : NULL;
+}
 
 static enum stp_state
 xport_stp_learn_state(const struct xport *xport)
 {
-    enum stp_state stp_state = xport->xbridge->stp && xport->stp_port_no
-        ? stp_port_get_state(stp_get_port(xport->xbridge->stp,
-                                          xport->stp_port_no))
-        : STP_DISABLED;
-    return stp_learn_in_state(stp_state);
+    struct stp_port *sp = xport_get_stp_port(xport);
+    return stp_learn_in_state(sp ? stp_port_get_state(sp) : STP_DISABLED);
 }
 
 static bool
 xport_stp_forward_state(const struct xport *xport)
 {
-    enum stp_state stp_state = xport->xbridge->stp && xport->stp_port_no
-        ? stp_port_get_state(stp_get_port(xport->xbridge->stp,
-                                          xport->stp_port_no))
-        : STP_DISABLED;
-    return stp_forward_in_state(stp_state);
+    struct stp_port *sp = xport_get_stp_port(xport);
+    return stp_forward_in_state(sp ? stp_port_get_state(sp) : STP_DISABLED);
 }
 
 /* Returns true if STP should process 'flow'.  Sets fields in 'wc' that
@@ -534,11 +535,9 @@ stp_should_process_flow(const struct flow *flow, struct 
flow_wildcards *wc)
 static void
 stp_process_packet(const struct xport *xport, const struct ofpbuf *packet)
 {
+    struct stp_port *sp = xport_get_stp_port(xport);
     struct ofpbuf payload = *packet;
     struct eth_header *eth = payload.data;
-    struct stp_port *sp = xport->xbridge->stp && xport->stp_port_no
-        ? stp_get_port(xport->xbridge->stp, xport->stp_port_no)
-        : NULL;
 
     /* Sink packets on ports that have STP disabled when the bridge has
      * STP enabled. */
-- 
1.7.9.5

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to