X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=secchan%2Fnetflow.c;h=7912b4b88dd5dc901d583875847498a4fe8821ce;hb=d83d6bbc3d9972c5adcc6c87df9f1b54b3a48e1d;hp=99f3eea4aa2b7e2b61dc95aea4d637ca742375de;hpb=064af42167bf4fc9aaea2702d80ce08074b889c0;p=openvswitch diff --git a/secchan/netflow.c b/secchan/netflow.c index 99f3eea4..7912b4b8 100644 --- a/secchan/netflow.c +++ b/secchan/netflow.c @@ -1,17 +1,17 @@ /* * Copyright (c) 2008, 2009 Nicira Networks. * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #include @@ -107,7 +107,7 @@ static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(1, 5); static int open_collector(char *dst) { - char *save_ptr; + char *save_ptr = NULL; const char *host_name; const char *port_string; struct sockaddr_in sin; @@ -118,8 +118,8 @@ open_collector(char *dst) * can cause segfaults here: * http://sources.redhat.com/bugzilla/show_bug.cgi?id=5614. * Using "::" instead of the obvious ":" works around it. */ - host_name = strtok_r(dst, "::", &save_ptr); - port_string = strtok_r(NULL, "::", &save_ptr); + host_name = strtok_r(dst, ":", &save_ptr); + port_string = strtok_r(NULL, ":", &save_ptr); if (!host_name) { ovs_error(0, "%s: bad peer name format", dst); return -EAFNOSUPPORT; @@ -197,7 +197,6 @@ netflow_expire(struct netflow *nf, const struct ofexpired *expired) 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)); } else { nf_rec->input = htons(expired->flow.in_port); nf_rec->output = htons(0); @@ -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); } }