X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=switch%2Ftable-linear.c;h=9a7a06cc855cafb69c36f9c1c9ce67b2259f478f;hb=e4cf5c4b82ce35b7702b24cb690f005cdd0a42d0;hp=d1a040389a375d61cc1f6dc9ab18b4228366227f;hpb=d012fea24ba79e4dd789c814bef46c96301c7e82;p=openvswitch diff --git a/switch/table-linear.c b/switch/table-linear.c index d1a04038..9a7a06cc 100644 --- a/switch/table-linear.c +++ b/switch/table-linear.c @@ -75,12 +75,6 @@ static int table_linear_insert(struct sw_table *swt, struct sw_flow *flow) if (f->priority == flow->priority && f->key.wildcards == flow->key.wildcards && flow_matches_2wild(&f->key, &flow->key)) { - /* Keep stats from the original flow */ - flow->used = f->used; - flow->created = f->created; - flow->packet_count = f->packet_count; - flow->byte_count = f->byte_count; - flow->serial = f->serial; list_replace(&flow->node, &f->node); list_replace(&flow->iter_node, &f->iter_node); @@ -107,7 +101,7 @@ static int table_linear_insert(struct sw_table *swt, struct sw_flow *flow) } static int table_linear_modify(struct sw_table *swt, - const struct sw_flow_key *key, + const struct sw_flow_key *key, uint16_t priority, int strict, const struct ofp_action *actions, int n_actions) { struct sw_table_linear *tl = (struct sw_table_linear *) swt; @@ -115,7 +109,8 @@ static int table_linear_modify(struct sw_table *swt, unsigned int count = 0; LIST_FOR_EACH (flow, struct sw_flow, node, &tl->flows) { - if (flow_matches_1wild(&flow->key, key)) { + if (flow_matches_desc(&flow->key, key, strict) + && (!strict || (flow->priority == priority))) { flow_replace_acts(flow, actions, n_actions); count++; } @@ -140,7 +135,7 @@ static int table_linear_delete(struct sw_table *swt, unsigned int count = 0; LIST_FOR_EACH_SAFE (flow, n, struct sw_flow, node, &tl->flows) { - if (flow_del_matches(&flow->key, key, strict) + if (flow_matches_desc(&flow->key, key, strict) && (!strict || (flow->priority == priority))) { do_delete(flow); count++;