[ovs-dev] [ofp-print 03/18] Use ofpbuf_pull() instead of ofpbuf_try_pull() where it is valid.

Ben Pfaff blp at nicira.com
Thu Dec 9 00:26:55 UTC 2010


In each of these cases, we know that the buffer is long enough to pull
the header because ofputil_decode_msg_type() already checked for us.
---
 lib/ofp-util.c    |   15 +++------------
 ofproto/ofproto.c |   15 +++------------
 2 files changed, 6 insertions(+), 24 deletions(-)

diff --git a/lib/ofp-util.c b/lib/ofp-util.c
index 7673b66..cbba506 100644
--- a/lib/ofp-util.c
+++ b/lib/ofp-util.c
@@ -897,10 +897,7 @@ ofputil_decode_flow_mod(struct flow_mod *fm, const struct ofp_header *oh,
         int error;
 
         /* Dissect the message. */
-        ofm = ofpbuf_try_pull(&b, sizeof *ofm);
-        if (!ofm) {
-            return ofp_mkerr(OFPET_BAD_REQUEST, OFPBRC_BAD_LEN);
-        }
+        ofm = ofpbuf_pull(&b, sizeof *ofm);
         error = ofputil_pull_actions(&b, b.size, &fm->actions, &fm->n_actions);
         if (error) {
             return error;
@@ -940,10 +937,7 @@ ofputil_decode_flow_mod(struct flow_mod *fm, const struct ofp_header *oh,
         int error;
 
         /* Dissect the message. */
-        nfm = ofpbuf_try_pull(&b, sizeof *nfm);
-        if (!nfm) {
-            return ofp_mkerr(OFPET_BAD_REQUEST, OFPBRC_BAD_LEN);
-        }
+        nfm = ofpbuf_pull(&b, sizeof *nfm);
         error = nx_pull_match(&b, ntohs(nfm->match_len), ntohs(nfm->priority),
                               &fm->cr);
         if (error) {
@@ -1054,10 +1048,7 @@ ofputil_decode_nxst_flow_request(struct flow_stats_request *fsr,
 
     ofpbuf_use_const(&b, oh, ntohs(oh->length));
 
-    nfsr = ofpbuf_try_pull(&b, sizeof *nfsr);
-    if (!nfsr) {
-        return ofp_mkerr(OFPET_BAD_REQUEST, OFPBRC_BAD_LEN);
-    }
+    nfsr = ofpbuf_pull(&b, sizeof *nfsr);
     error = nx_pull_match(&b, ntohs(nfsr->match_len), 0, &fsr->match);
     if (error) {
         return error;
diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c
index 1ac5983..d5f258f 100644
--- a/ofproto/ofproto.c
+++ b/ofproto/ofproto.c
@@ -3073,10 +3073,7 @@ handle_packet_out(struct ofconn *ofconn, const struct ofp_header *oh)
 
     /* Get ofp_packet_out. */
     ofpbuf_use_const(&request, oh, ntohs(oh->length));
-    opo = ofpbuf_try_pull(&request, offsetof(struct ofp_packet_out, actions));
-    if (!opo) {
-        return ofp_mkerr(OFPET_BAD_REQUEST, OFPBRC_BAD_LEN);
-    }
+    opo = ofpbuf_pull(&request, offsetof(struct ofp_packet_out, actions));
 
     /* Get actions. */
     error = ofputil_pull_actions(&request, ntohs(opo->actions_len),
@@ -3517,10 +3514,7 @@ handle_nxst_flow(struct ofconn *ofconn, const struct ofp_header *oh)
     ofpbuf_use_const(&b, oh, ntohs(oh->length));
 
     /* Dissect the message. */
-    nfsr = ofpbuf_try_pull(&b, sizeof *nfsr);
-    if (!nfsr) {
-        return ofp_mkerr(OFPET_BAD_REQUEST, OFPBRC_BAD_LEN);
-    }
+    nfsr = ofpbuf_pull(&b, sizeof *nfsr);
     error = nx_pull_match(&b, ntohs(nfsr->match_len), 0, &target);
     if (error) {
         return error;
@@ -3652,10 +3646,7 @@ handle_nxst_aggregate(struct ofconn *ofconn, const struct ofp_header *oh)
     ofpbuf_use_const(&b, oh, ntohs(oh->length));
 
     /* Dissect the message. */
-    request = ofpbuf_try_pull(&b, sizeof *request);
-    if (!request) {
-        return ofp_mkerr(OFPET_BAD_REQUEST, OFPBRC_BAD_LEN);
-    }
+    request = ofpbuf_pull(&b, sizeof *request);
     error = nx_pull_match(&b, ntohs(request->match_len), 0, &target);
     if (error) {
         return error;
-- 
1.7.1





More information about the dev mailing list