On Sun, Dec 04, 2011 at 04:57:19PM -0800, Justin Pettit wrote:
> Mike Bursell pointed out that our policer only works on IPv4
> traffic--and specifically not IPv6. By using the "basic" filter, we can
> enforce policing on all traffic for a particular interface.
>
> Jamal Hadi Salim pointed out that calling "tc" directly with system() is
> pretty ugly. This commit switches our remaining "tc" calls to directly
> sending the appropriate netlink messages.
>
> Suggested-by: Mike Bursell <[email protected]>
> Suggested-by: Jamal Hadi Salim <[email protected]>
I assume you tested it, I only built it.
"sparse" says:
../lib/netdev-linux.c:3547:47: warning: incorrect type in argument 2
(different base types)
../lib/netdev-linux.c:3547:47: expected unsigned int [unsigned]
minor
../lib/netdev-linux.c:3547:47: got restricted __be16
That's about this line:
tcmsg->tcm_info = tc_make_handle(49, htons(ETH_P_ALL));
This is a "false positive" so we need to placate sparse with:
tcmsg->tcm_info = tc_make_handle(49, (OVS_FORCE uint16_t) htons(ETH_P_ALL));
Also, netdev_linux_set_policing() introduces a duplicate netdev_name
in an inner block. You can just delete it, the outer block's
definition is identical.
There's a missing space before ':' here:
+ netdev_dev->kbits_burst = kbits_rate ? kbits_burst: 0;
But I think you could just write 'kbits_burst' by itself without any
?: because we normalize its value at the top of the function.
In tc_add_policer(), please put spaces around the | operator. I find
that it is easier to read that way.
Otherwise, this looks good.
Thank you, this is a real improvement.
Ben.
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev