X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=ofproto%2Fpktbuf.c;h=02c590cf61375861a5d49481db87fac515eb3d9d;hb=4cd78906a0c30cc2de0a6a0370c6b2cf1b7853b2;hp=aa90295427b91808bfbdbe29a22dfc09aa1784f0;hpb=68efcbec41b0acfd8bb7579a5d38afd71b6daf7c;p=openvswitch diff --git a/ofproto/pktbuf.c b/ofproto/pktbuf.c index aa902954..02c590cf 100644 --- a/ofproto/pktbuf.c +++ b/ofproto/pktbuf.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2009, 2010 Nicira Networks. + * Copyright (c) 2008, 2009, 2010, 2011 Nicira Networks. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,7 +26,12 @@ #include "vconn.h" #include "vlog.h" -VLOG_DEFINE_THIS_MODULE(pktbuf) +VLOG_DEFINE_THIS_MODULE(pktbuf); + +COVERAGE_DEFINE(pktbuf_buffer_unknown); +COVERAGE_DEFINE(pktbuf_null_cookie); +COVERAGE_DEFINE(pktbuf_retrieved); +COVERAGE_DEFINE(pktbuf_reuse_error); /* Buffers are identified by a 32-bit opaque ID. We divide the ID * into a buffer number (low bits) and a cookie (high bits). The buffer number @@ -168,6 +173,11 @@ pktbuf_retrieve(struct pktbuf *pb, uint32_t id, struct ofpbuf **bufferp, struct packet *p; int error; + if (id == UINT32_MAX) { + error = 0; + goto error; + } + if (!pb) { VLOG_WARN_RL(&rl, "attempt to send buffered packet via connection " "without buffers"); @@ -199,6 +209,7 @@ pktbuf_retrieve(struct pktbuf *pb, uint32_t id, struct ofpbuf **bufferp, "if the switch was recently in fail-open mode)", id); error = 0; } +error: *bufferp = NULL; *in_port = UINT16_MAX; return error;