X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=secchan%2Fnetflow.c;h=282fd834270e6706f4d96ba47eb13580e0723ff2;hb=6a07af3678afc64e39a330fc07362a940ef1ecce;hp=0162c45ab16249342d17b01930593ac725a5f3b9;hpb=ba8de5cbc7a5a1edadf371107c55f946e25421d3;p=openvswitch diff --git a/secchan/netflow.c b/secchan/netflow.c index 0162c45a..282fd834 100644 --- a/secchan/netflow.c +++ b/secchan/netflow.c @@ -196,11 +196,10 @@ netflow_expire(struct netflow *nf, const struct ofexpired *expired) if (nf->add_id_to_iface) { uint16_t iface = (nf->engine_id & 0x7f) << 9; nf_rec->input = htons(iface | (expired->flow.in_port & 0x1ff)); - nf_rec->output = htons(iface); - printf("input: %x\n", ntohs(nf_rec->input)); + nf_rec->output = htons(iface | (expired->output_iface & 0x1ff)); } else { nf_rec->input = htons(expired->flow.in_port); - nf_rec->output = htons(0); + nf_rec->output = htons(expired->output_iface); } nf_rec->packet_count = htonl(MIN(expired->packet_count, UINT32_MAX)); nf_rec->byte_count = htonl(MIN(expired->byte_count, UINT32_MAX)); @@ -222,9 +221,8 @@ netflow_expire(struct netflow *nf, const struct ofexpired *expired) nf_rec->ip_proto = expired->flow.nw_proto; nf_rec->ip_tos = expired->ip_tos; - /* NetFlow messages are limited to 30 records. A length of 1400 - * bytes guarantees that the limit is not exceeded. */ - if (nf->packet.size >= 1400) { + /* NetFlow messages are limited to 30 records. */ + if (ntohs(nf_hdr->count) >= 30) { netflow_run(nf); } }