X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=ofproto%2Fofproto.c;h=f40f99590acad5deb690379d1784d06cdbfc4003;hb=c71c6043a7617e6e6c2b8748550014f54476faa7;hp=ac243cf053b79f08edf4b42519ead2da3279d240;hpb=72ba2ed371ae593b6fda1d196c31d7dd408a6a1c;p=openvswitch diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c index ac243cf0..f40f9959 100644 --- a/ofproto/ofproto.c +++ b/ofproto/ofproto.c @@ -33,13 +33,13 @@ #include "ofp-print.h" #include "ofp-util.h" #include "ofpbuf.h" +#include "ofproto-provider.h" #include "openflow/nicira-ext.h" #include "openflow/openflow.h" #include "packets.h" #include "pinsched.h" #include "pktbuf.h" #include "poll-loop.h" -#include "private.h" #include "shash.h" #include "sset.h" #include "timeval.h" @@ -320,6 +320,8 @@ ofproto_create(const char *datapath_name, const char *datapath_type, hmap_insert(&all_ofprotos, &ofproto->hmap_node, hash_string(ofproto->name, 0)); ofproto->datapath_id = 0; + ofproto_set_flow_eviction_threshold(ofproto, + OFPROTO_FLOW_EVICTON_THRESHOLD_DEFAULT); ofproto->fallback_dpid = pick_fallback_dpid(); ofproto->mfr_desc = xstrdup(DEFAULT_MFR_DESC); ofproto->hw_desc = xstrdup(DEFAULT_HW_DESC); @@ -407,6 +409,18 @@ ofproto_set_in_band_queue(struct ofproto *ofproto, int queue_id) connmgr_set_in_band_queue(ofproto->connmgr, queue_id); } +/* Sets the number of flows at which eviction from the kernel flow table + * will occur. */ +void +ofproto_set_flow_eviction_threshold(struct ofproto *ofproto, unsigned threshold) +{ + if (threshold < OFPROTO_FLOW_EVICTION_THRESHOLD_MIN) { + ofproto->flow_eviction_threshold = OFPROTO_FLOW_EVICTION_THRESHOLD_MIN; + } else { + ofproto->flow_eviction_threshold = threshold; + } +} + void ofproto_set_desc(struct ofproto *p, const char *mfr_desc, const char *hw_desc, @@ -1369,8 +1383,8 @@ ofproto_rule_destroy__(struct rule *rule) /* This function allows an ofproto implementation to destroy any rules that * remain when its ->destruct() function is called. The caller must have * already uninitialized any derived members of 'rule' (step 5 described in the - * large comment in ofproto/private.h titled "Life Cycle"). This function - * implements steps 6 and 7. + * large comment in ofproto/ofproto-provider.h titled "Life Cycle"). + * This function implements steps 6 and 7. * * This function should only be called from an ofproto implementation's * ->destruct() function. It is not suitable elsewhere. */ @@ -2800,8 +2814,8 @@ ofoperation_destroy(struct ofoperation *op) * If 'op' is a "delete flow" operation, 'error' must be 0. That is, flow * deletions are not allowed to fail. * - * Please see the large comment in ofproto/private.h titled "Asynchronous - * Operation Support" for more information. */ + * Please see the large comment in ofproto/ofproto-provider.h titled + * "Asynchronous Operation Support" for more information. */ void ofoperation_complete(struct ofoperation *op, int error) {