On Mon, Jul 11, 2016 at 11:56:32PM -0700, Justin Pettit wrote: > Otherwise, errors are logged at "debug" level. Errors when pushing > flows can then seemingly be silently lost. > > Signed-off-by: Justin Pettit <jpet...@ovn.org>
It'd be a little cleaner like this: diff --git a/ovn/controller/ofctrl.c b/ovn/controller/ofctrl.c index a5a69f3..b451453 100644 --- a/ovn/controller/ofctrl.c +++ b/ovn/controller/ofctrl.c @@ -470,28 +470,31 @@ queue_msg(struct ofpbuf *msg) } static void +log_openflow_rl(struct vlog_rate_limit *rl, enum vlog_level level, + const struct ofp_header *oh, const char *title) +{ + if (!vlog_should_drop(&this_module, level, rl)) { + char *s = ofp_to_string(oh, ntohs(oh->length), 2); + vlog(&this_module, level, "%s: %s", title, s); + free(s); + } +} + +static void ofctrl_recv(const struct ofp_header *oh, enum ofptype type) { if (type == OFPTYPE_ECHO_REQUEST) { queue_msg(make_echo_reply(oh)); } else if (type == OFPTYPE_ERROR) { static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(30, 300); - - char *s = ofp_to_string(oh, ntohs(oh->length), 2); - VLOG_INFO_RL(&rl, "OpenFlow error: %s", s); - free(s); + log_openflow_rl(&rl, VLL_INFO, oh, "OpenFlow error"); } else if (type != OFPTYPE_ECHO_REPLY && type != OFPTYPE_BARRIER_REPLY && type != OFPTYPE_PACKET_IN && type != OFPTYPE_PORT_STATUS && type != OFPTYPE_FLOW_REMOVED) { - if (VLOG_IS_DBG_ENABLED()) { - static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(30, 300); - - char *s = ofp_to_string(oh, ntohs(oh->length), 2); - VLOG_DBG_RL(&rl, "OpenFlow packet ignored: %s", s); - free(s); - } + static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(30, 300); + log_openflow_rl(&rl, VLL_DBG, oh, "OpenFlow packet ignored"); } } Acked-by: Ben Pfaff <b...@ovn.org> _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev