On 4/18/16, 10:17 AM, Hannes Frederic Sowa wrote:
> Hi Jiri,
>
> On 18.04.2016 17:47, Jiri Pirko wrote:
>> Proposed solutions (ideas):
>> 1) per-netns. Add a procfs file:
>>     /proc/sys/net/ipv4/route/fib_offload_error_policy
>>       with values: "evict" - default, current behaviour
>>                         "fail" - propagate offload error to user
>>     The policy value would be stored in struct net.
> >
>> 2) per-VRF/table
>>     When user creates a VRF master, he specifies a table ID
>>     this VRF is going to use. I propose to extend this so
>>     he can pass a policy ("evict"/"fail").
>>     The policy value would be stored in struct fib_table or
>>     struct fib6_table. The problem is that vfr only saves
>>     table ID, allocates dst but does not actually create
>>     table. That might be created later. But I think this
>>     could be resolved.
>>
>> 3) per-VFR/master_netdev
>>     In this case, the policy would be also set during
>>     the creation of VFR master. From user perspective,
>>     this looks same as 2)
>>     The policy value would be stored in struct net_vrf (vrf private).
>
> I agree that a fail policy is probably the way forward regarding the issues 
> you outlined.
>
> One question though:
>
> Shouldn't the policy by an attribute of the switch, e.g. configurable by 
> devlink (maybe also not the right place)? Not sure how user space can 
> otherwise make correct assumptions about the state of the switch and initiate 
> proper countermeasures (e.g. reducing the smallest prefix length installed to 
> hardware).
>
I am with hannes here. If we introduce a policy, I think it should be global or 
per switchdev instance (possibly via devlink).
This would be a system policy (set via the administrator) and the user or app 
does not need to know about it.

Reply via email to