Set arbitrary protocol for route?

jmoore jmoore at devalias.io
Sun Aug 24 14:58:35 UTC 2014


---- On Sat, 23 Aug 2014 13:33:04 -0400 Nikolay Denev <nike_d at cytexbg.com> wrote ---- 

On Sat, Aug 23, 2014 at 8:49 AM, Adrian Chadd <adrian at freebsd.org> wrote: 
> Ok, so how does the whole protocol thing implement priority? 
> 
> 
> -a 
 
Ah, sorry, reading again I don't think it does that. For some reason I 
was under the impression it does. 
So, it looks like it's just a 8 bit tag applied to each route, not 
involved in the actual routing, but allows you 
to filter when displaying etc. 
>From linux ip-route(8) man page : 
 
 protocol RTPROTO 
 the routing protocol identifier of this route. RTPROTO may be a 
 number or a string from the file /etc/iproute2/rt_protos. If 
 the routing protocol ID is not given, ip assumes protocol boot 
 (i.e. it assumes the route was added by someone who doesn't 
 understand what they are doing). Several protocol values have a 
 fixed interpretation. Namely: 
 
 redirect - the route was installed due to an ICMP 
 redirect. 
 
 kernel - the route was installed by the kernel during 
 autoconfiguration. 
 
 boot - the route was installed during the bootup 
 sequence. If a routing daemon starts, it will purge all 
 of them. 
 
 static - the route was installed by the administrator to 
 override dynamic routing. Routing daemon will respect 
 them and, probably, even advertise them to its peers. 
 
 ra - the route was installed by Router Discovery 
 protocol. 
 
 The rest of the values are not reserved and the administrator is 
 free to assign (or not to assign) protocol tags. 
 
 
 
--Nikolay 


The context for this questions is updating this script[1] to allow a (currently) unsupported FreeBSD instance running on Google Compute Engine to be able to use their load balancers.  In this case, the proto is used as a magic number, as necessary internal routes are programmatically determined and then compared to current routes, adding/removing as needed.  

[1] https://github.com/GoogleCloudPlatform/compute-image-packages/blob/master/google-daemon/usr/share/google/google_daemon/address_manager.py




More information about the freebsd-net mailing list