Otherwise, if the port add succeeds but the query that looks up the port number fails, then ofproto_port_add() would return zero as the OpenFlow port number and ignore the error.
Reported-by: Guolin Yang <gy...@vmware.com> Signed-off-by: Ben Pfaff <b...@nicira.com> --- v1 was posted on March 19. This version is merely a rebase of v1. AUTHORS | 1 + ofproto/ofproto.c | 18 ++++++++++++------ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/AUTHORS b/AUTHORS index ac7886b..8154e40 100644 --- a/AUTHORS +++ b/AUTHORS @@ -154,6 +154,7 @@ Giuseppe de Candia giuseppe.decan...@gmail.com Gordon Good gg...@nicira.com Greg Dahlman gdahl...@hotmail.com Gregor Schaffrath gr...@net.t-labs.tu-berlin.de +Guolin Yang gy...@vmware.com Hassan Khan hassan.k...@seecs.edu.pk Hector Oron hector.o...@gmail.com Henrik Amren hen...@nicira.com diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c index b88cd81..b4ddb4d 100644 --- a/ofproto/ofproto.c +++ b/ofproto/ofproto.c @@ -1758,12 +1758,18 @@ ofproto_port_add(struct ofproto *ofproto, struct netdev *netdev, update_port(ofproto, netdev_name); } if (ofp_portp) { - struct ofproto_port ofproto_port; - - ofproto_port_query_by_name(ofproto, netdev_get_name(netdev), - &ofproto_port); - *ofp_portp = error ? OFPP_NONE : ofproto_port.ofp_port; - ofproto_port_destroy(&ofproto_port); + *ofp_portp = OFPP_NONE; + if (!error) { + struct ofproto_port ofproto_port; + + error = ofproto_port_query_by_name(ofproto, + netdev_get_name(netdev), + &ofproto_port); + if (!error) { + *ofp_portp = ofproto_port.ofp_port; + ofproto_port_destroy(&ofproto_port); + } + } } return error; } -- 1.7.10.4 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev