[ovs-dev] [tunnels2 4/5] datapath: Add multicast tunnel support.

Jesse Gross jesse at nicira.com
Fri Oct 21 00:11:33 UTC 2011


On Mon, Oct 17, 2011 at 3:14 PM, Ben Pfaff <blp at nicira.com> wrote:
> diff --git a/datapath/tunnel.c b/datapath/tunnel.c
> index 8edff06..6fde389 100644
> --- a/datapath/tunnel.c
> +++ b/datapath/tunnel.c
>  int tnl_set_addr(struct vport *vport, const unsigned char *addr)
>  {
>        struct tnl_vport *tnl_vport = tnl_vport_priv(vport);
> -       struct tnl_mutable_config *mutable;
> +       struct tnl_mutable_config *old_mutable, *mutable;
>
> -       mutable = kmemdup(rtnl_dereference(tnl_vport->mutable),
> -                         sizeof(struct tnl_mutable_config), GFP_KERNEL);
> +       old_mutable = rtnl_dereference(tnl_vport->mutable);
> +       mutable = kmemdup(old_mutable, sizeof(struct tnl_mutable_config), GFP_KERNEL);
>        if (!mutable)
>                return -ENOMEM;
>
> +       mutable->mlink = mutable->mlink;

I think this line probably isn't going to do a whole lot...

> diff --git a/include/openvswitch/tunnel.h b/include/openvswitch/tunnel.h
> index 110e652..ecdd821 100644
> --- a/include/openvswitch/tunnel.h
> +++ b/include/openvswitch/tunnel.h
> @@ -57,6 +57,7 @@ enum {
>        OVS_TUNNEL_ATTR_IN_KEY,   /* __be64 key to match on input. */
>        OVS_TUNNEL_ATTR_TOS,      /* 8-bit TOS value. */
>        OVS_TUNNEL_ATTR_TTL,      /* 8-bit TTL value. */
> +       OVS_TUNNEL_ATTR_LINK,     /* 32-bit ifindex of linked device. */

I think this was supposed to be part of the following patch.

> diff --git a/vswitchd/vswitch.xml b/vswitchd/vswitch.xml
> index d579b87..d09ade4 100644
> --- a/vswitchd/vswitch.xml
> +++ b/vswitchd/vswitch.xml
>       <column name="options" key="local_ip">
> -        Optional.  The destination IP that received packets must
> -        match.  Default is to match all addresses.
> +        Optional.  The destination IP that received packets must match.
> +        Default is to match all addresses.  Must be omitted when <ref
> +        column="options" key="remote_ip"/> is a multicast address.
>       </column>

I think we probably should do some validation on this - otherwise
ports that specify a local address and a multicast address silently
won't match.

Maybe we should also document that routing table changes for multicast
tunnels require deleting and recreating them.

I think in the gre_err() code path, we should ignore ICMP messages
sent to multicast addresses.



More information about the dev mailing list