X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Fvconn.c;h=80ba471b9a49a8db9787cc19e440e5746a8e6fd5;hb=fb0d597fb64308c60001e3afc9b31eb295dedb6b;hp=d8807fda3e521b46d9a975138f3c408ba6724661;hpb=a0bc29a541fc7dc6e20137d5558e2094d614e6ab;p=openvswitch diff --git a/lib/vconn.c b/lib/vconn.c index d8807fda..80ba471b 100644 --- a/lib/vconn.c +++ b/lib/vconn.c @@ -25,6 +25,7 @@ #include #include "coverage.h" #include "dynamic-string.h" +#include "fatal-signal.h" #include "flow.h" #include "ofp-print.h" #include "ofpbuf.h" @@ -273,6 +274,8 @@ vconn_open_block(const char *name, int min_version, struct vconn **vconnp) struct vconn *vconn; int error; + fatal_signal_run(); + error = vconn_open(name, min_version, &vconn); while (error == EAGAIN) { vconn_run(vconn); @@ -607,6 +610,9 @@ int vconn_send_block(struct vconn *vconn, struct ofpbuf *msg) { int retval; + + fatal_signal_run(); + while ((retval = vconn_send(vconn, msg)) == EAGAIN) { vconn_run(vconn); vconn_run_wait(vconn); @@ -621,6 +627,9 @@ int vconn_recv_block(struct vconn *vconn, struct ofpbuf **msgp) { int retval; + + fatal_signal_run(); + while ((retval = vconn_recv(vconn, msgp)) == EAGAIN) { vconn_run(vconn); vconn_run_wait(vconn); @@ -1349,6 +1358,7 @@ check_nicira_action(const union ofp_action *a, unsigned int len) switch (ntohs(nah->subtype)) { case NXAST_RESUBMIT: + case NXAST_SET_TUNNEL: return check_action_exact_len(a, len, 16); default: return ofp_mkerr(OFPET_BAD_ACTION, OFPBAC_BAD_VENDOR_TYPE); @@ -1457,7 +1467,7 @@ normalize_match(struct ofp_match *m) enum { OFPFW_TP = OFPFW_TP_SRC | OFPFW_TP_DST }; uint32_t wc; - wc = ntohl(m->wildcards) & OFPFW_ALL; + wc = ntohl(m->wildcards) & OVSFW_ALL; if (wc & OFPFW_DL_TYPE) { m->dl_type = 0;