Looks good.

We should probably look at addressing this in the OpenFlow spec, since my quick 
reading shows that the Features Reply has the same behavior in OpenFlow 1.2.  I 
wonder if it would make sense to just not report on ports there, since the 
controller can get that information through a Port Stats message, which 
supports going across multiple 64K messages.

--Justin


On May 2, 2012, at 10:35 AM, Ben Pfaff wrote:

> An OpenFlow message is limited to 65535 bytes so if there are more than
> (65535 - sizeof(struct ofp_switch_features)) / sizeof(struct ofp_phy_port)
> == 1364 ports then the feature reply cannot hold them all.  This commit
> prevents the feature reply from overflowing, at the cost of only reporting
> a random sampling of ports.
> 
> Signed-off-by: Ben Pfaff <b...@nicira.com>
> ---
> This is already fixed on master because the refactoring for OpenFlow
> 1.[123] support was carefully done to avoid overflows.
> 
> This isn't really an issue before branch-1.6 because only branch-1.6
> and master support more than 1024 ports in the kernel datapath.  I
> guess some third-party hardware datapath could support more but I am
> not aware of one.
> 
> ofproto/ofproto.c |    3 +++
> 1 files changed, 3 insertions(+), 0 deletions(-)
> 
> diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c
> index 28bed08..86cf0bc 100644
> --- a/ofproto/ofproto.c
> +++ b/ofproto/ofproto.c
> @@ -1904,6 +1904,9 @@ handle_features_request(struct ofconn *ofconn, const 
> struct ofp_header *oh)
>     osf->actions = htonl(actions);
> 
>     HMAP_FOR_EACH (port, hmap_node, &ofproto->ports) {
> +        if (buf->size + sizeof port->opp > UINT16_MAX) {
> +            break;
> +        }
>         ofpbuf_put(buf, &port->opp, sizeof port->opp);
>     }
> 
> -- 
> 1.7.2.5
> 
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to