X-Git-Url: http://git.cascardo.eti.br/?a=blobdiff_plain;f=ofproto%2Fofproto.c;h=5fa34936a79139dde61b02f74990648c71dc5003;hb=77ab5fd2a95ba2fef5bbe25aaa429776b9e29ea3;hp=01353558ae470d8d039635e458043313aa339c2b;hpb=5d10476a12dd3df756e15c9bcae0061bef787379;p=cascardo%2Fovs.git diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c index 01353558a..5fa34936a 100644 --- a/ofproto/ofproto.c +++ b/ofproto/ofproto.c @@ -3411,6 +3411,27 @@ exit: return error; } +static enum ofperr +handle_nxt_resume(struct ofconn *ofconn, const struct ofp_header *oh) +{ + struct ofproto *ofproto = ofconn_get_ofproto(ofconn); + struct ofputil_packet_in_private pin; + enum ofperr error; + + error = ofputil_decode_packet_in_private(oh, false, &pin, NULL, NULL); + if (error) { + return error; + } + + error = (ofproto->ofproto_class->nxt_resume + ? ofproto->ofproto_class->nxt_resume(ofproto, &pin) + : OFPERR_NXR_NOT_SUPPORTED); + + ofputil_packet_in_private_destroy(&pin); + + return error; +} + static void update_port_config(struct ofconn *ofconn, struct ofport *port, enum ofputil_port_config config, @@ -7211,6 +7232,9 @@ handle_openflow__(struct ofconn *ofconn, const struct ofpbuf *msg) case OFPTYPE_GET_ASYNC_REQUEST: return handle_nxt_get_async_request(ofconn, oh); + case OFPTYPE_NXT_RESUME: + return handle_nxt_resume(ofconn, oh); + /* Statistics requests. */ case OFPTYPE_DESC_STATS_REQUEST: return handle_desc_stats_request(ofconn, oh);