Hello,

On Fri, 17 Jul 2015, Thomas Graf wrote:

> Add a new flowi_tunnel structure which is a subset of ip_tunnel_key to
> allow routes to match on tunnel metadata. For now, the tunnel id is
> added to flowi_tunnel which allows for routes to be bound to specific
> virtual tunnels.
> 
> Signed-off-by: Thomas Graf <tg...@suug.ch>
> ---

> +struct flowi_tunnel {
> +     __be64                  tun_id;
> +};
> +
>  struct flowi_common {
>       int     flowic_oif;
>       int     flowic_iif;
> @@ -30,6 +34,7 @@ struct flowi_common {
>  #define FLOWI_FLAG_ANYSRC            0x01
>  #define FLOWI_FLAG_KNOWN_NH          0x02
>       __u32   flowic_secid;
> +     struct flowi_tunnel flowic_tun_key;

        New input key for fib rules? It should be initialized
at some places, we should not provide random values:

- flowi4_init_output

- fib_compute_spec_dst

- __fib_validate_source

- ip_route_input_slow: with 0 if no tun_info, like below

>  };
>  
>  union flowi_uli {
> @@ -66,6 +71,7 @@ struct flowi4 {
>  #define flowi4_proto         __fl_common.flowic_proto
>  #define flowi4_flags         __fl_common.flowic_flags
>  #define flowi4_secid         __fl_common.flowic_secid
> +#define flowi4_tun_key               __fl_common.flowic_tun_key

> @@ -1690,6 +1693,9 @@ static int ip_route_input_slow(struct sk_buff *skb, 
> __be32 daddr, __be32 saddr,
>          by fib_lookup.
>        */
>  
> +     tun_info = skb_tunnel_info(skb);
> +     if (tun_info && tun_info->mode == IP_TUNNEL_INFO_RX)
> +             fl4.flowi4_tun_key.tun_id = tun_info->key.tun_id;

        else
                fl4.flowi4_tun_key.tun_id = 0;

>       skb_dst_drop(skb);
>  
>       if (ipv4_is_multicast(saddr) || ipv4_is_lbcast(saddr))
> -- 
> 2.4.3

Regards

--
Julian Anastasov <j...@ssi.bg>
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to