Hi guys,

I may be going blind or just dumb, but I could of sworn this worked like a year ago in v2.

I have a t_static4 table, with a static device route, I pipe this to my master4 table, then pipe my master4 table to RIP and only pick out the RTS_STATIC_DEVICE routes.

However the source is set to RTS_STATIC not RTS_STATIC_DEVICE?  enum(30)1

Full config file attached. I tried to summarize it a bit below. I also attached a diagram.svg of the r1 setup below.

-N



ipv4 table t_static4;

protocol static static4 {
        ipv4 {
                table t_static4;
                export none;
                import all;
        };
        route 192.168.20.0/24 via "eth1";
};

protocol pipe p_static4_to_master4 {
        table t_static4;
        peer table master4;

        export all;
        import none;
};

ipv4 table t_rip4;

filter f_rip_export4 {
        # Redistribute static device routes
        if (source = RTS_STATIC_DEVICE) then {
                accept;
        }
        # Redistribute RIP routes
        if (source = RTS_RIP) then {
                accept;
        }
        reject;
};

filter f_rip_import4 {
        # Import all RIP routes by default
        accept;
};

filter f_rip_master4_export {
        # Do not export default route to master
        if (net = 0.0.0.0/0) then {
                reject;
        }
        # Only export RIP routes o the master table
        if (source = RTS_RIP) then {
                accept;
        }
        # Reject everything else;
        reject;
};

filter f_rip_master4_import {
        print "rip to master";
        print source;
        # Import static device routes into RIP (redistribute static_device)
        if (source = RTS_STATIC_DEVICE) then {
                accept;
        }

        reject;
};

protocol rip rip4 {
        description "RIP protocol for IPv4";

        ipv4 {
                table t_rip4;

                export filter f_rip_export4;
                import filter f_rip_import4;

        };

        interface "eth0" {
                update time 5;
                metric 2;
        };
};


Here is the result....  (sorry its in JSON)...


------------------------------------------------------------------------------------- RIP4(r1) --------------------------------------------------------------------------------------
{}
------------------------------------------------------------------------------------ STATIC4(r1) ------------------------------------------------------------------------------------
{'192.168.20.0/24': [{'nexthops': [{'interface': 'eth1'}],
                      'pref': '200',
                      'prefix_type': 'unicast',
                      'protocol': 'static4',
                      'since': '2020-08-21 05:57:43',
                      'type': ['static', 'univ']}]}
------------------------------------------------------------------------------------ MASTER4(r1) ------------------------------------------------------------------------------------
{'192.168.20.0/24': [{'nexthops': [{'interface': 'eth1'}],
                      'pref': '200',
                      'prefix_type': 'unicast',
                      'protocol': 'static4',
                      'since': '2020-08-21 05:57:43',
                      'type': ['static', 'univ']}]}
------------------------------------------------------------------------------------ KERNEL4(r1) ------------------------------------------------------------------------------------
{'192.168.20.0/24': [{'nexthops': [{'interface': 'eth1'}],
                      'pref': '200',
                      'prefix_type': 'unicast',
                      'protocol': 'static4',
                      'since': '2020-08-21 05:57:43',
                      'type': ['static', 'univ']}]}

And the full log...

------------------------------------------------------------------------------------ LOGFILE(r1) ------------------------------------------------------------------------------------
2020-08-21 05:57:43 <TRACE> device1: Initializing
2020-08-21 05:57:43 <TRACE> kernel4: Channel ipv4 connected to table t_kernel4
2020-08-21 05:57:43 <TRACE> kernel4: Initializing
2020-08-21 05:57:43 <TRACE> kernel6: Channel ipv6 connected to table t_kernel6
2020-08-21 05:57:43 <TRACE> kernel6: Initializing
2020-08-21 05:57:43 <TRACE> p_master4_to_kernel4: Channel pri connected to table master4
2020-08-21 05:57:43 <TRACE> p_master4_to_kernel4: Channel sec connected to table t_kernel4
2020-08-21 05:57:43 <TRACE> p_master4_to_kernel4: Initializing
2020-08-21 05:57:43 <TRACE> p_master6_to_kernel6: Channel pri connected to table master6
2020-08-21 05:57:43 <TRACE> p_master6_to_kernel6: Channel sec connected to table t_kernel6
2020-08-21 05:57:43 <TRACE> p_master6_to_kernel6: Initializing
2020-08-21 05:57:43 <TRACE> static4: Channel ipv4 connected to table t_static4
2020-08-21 05:57:43 <TRACE> static4: Initializing
2020-08-21 05:57:43 <TRACE> static6: Channel ipv6 connected to table t_static6
2020-08-21 05:57:43 <TRACE> static6: Initializing
2020-08-21 05:57:43 <TRACE> p_static4_to_master4: Channel pri connected to table t_static4
2020-08-21 05:57:43 <TRACE> p_static4_to_master4: Channel sec connected to table master4
2020-08-21 05:57:43 <TRACE> p_static4_to_master4: Initializing
2020-08-21 05:57:43 <TRACE> p_static6_to_master6: Channel pri connected to table t_static6
2020-08-21 05:57:43 <TRACE> p_static6_to_master6: Channel sec connected to table master6
2020-08-21 05:57:43 <TRACE> p_static6_to_master6: Initializing
2020-08-21 05:57:43 <TRACE> rip4: Channel ipv4 connected to table t_rip4
2020-08-21 05:57:43 <TRACE> rip4: Initializing
2020-08-21 05:57:43 <TRACE> rip6: Channel ipv6 connected to table t_rip6
2020-08-21 05:57:43 <TRACE> rip6: Initializing
2020-08-21 05:57:43 <TRACE> p_rip4_to_master4: Channel pri connected to table t_rip4
2020-08-21 05:57:43 <TRACE> p_rip4_to_master4: Channel sec connected to table master4
2020-08-21 05:57:43 <TRACE> p_rip4_to_master4: Initializing
2020-08-21 05:57:43 <TRACE> p_rip6_to_master6: Channel pri connected to table t_rip6
2020-08-21 05:57:43 <TRACE> p_rip6_to_master6: Channel sec connected to table master6
2020-08-21 05:57:43 <TRACE> p_rip6_to_master6: Initializing
2020-08-21 05:57:43 <TRACE> device1: Starting
2020-08-21 05:57:43 <TRACE> device1: Scanning interfaces
2020-08-21 05:57:43 <TRACE> device1: State changed to up
2020-08-21 05:57:43 <TRACE> kernel4: Starting
2020-08-21 05:57:43 <TRACE> kernel4: State changed to up
2020-08-21 05:57:43 <TRACE> kernel6: Starting
2020-08-21 05:57:43 <TRACE> kernel6: State changed to up
2020-08-21 05:57:43 <TRACE> p_master4_to_kernel4: Starting
2020-08-21 05:57:43 <TRACE> p_master4_to_kernel4: State changed to up
2020-08-21 05:57:43 <TRACE> p_master6_to_kernel6: Starting
2020-08-21 05:57:43 <TRACE> p_master6_to_kernel6: State changed to up
2020-08-21 05:57:43 <TRACE> static4: Starting
2020-08-21 05:57:43 <TRACE> static4: State changed to up
2020-08-21 05:57:43 <TRACE> static4 > added [best] 192.168.20.0/24 unicast
2020-08-21 05:57:43 <TRACE> static6: Starting
2020-08-21 05:57:43 <TRACE> static6: State changed to up
2020-08-21 05:57:43 <TRACE> static6 > added [best] fc20::/64 unicast
2020-08-21 05:57:43 <TRACE> p_static4_to_master4: Starting
2020-08-21 05:57:43 <TRACE> p_static4_to_master4: State changed to up
2020-08-21 05:57:43 <TRACE> p_static6_to_master6: Starting
2020-08-21 05:57:43 <TRACE> p_static6_to_master6: State changed to up
2020-08-21 05:57:43 <TRACE> rip4: Starting
2020-08-21 05:57:43 <TRACE> rip4: State changed to up
2020-08-21 05:57:43 <TRACE> rip6: Starting
2020-08-21 05:57:43 <TRACE> rip6: State changed to up
2020-08-21 05:57:43 <TRACE> p_rip4_to_master4: Starting
2020-08-21 05:57:43 <TRACE> p_rip4_to_master4: State changed to up
2020-08-21 05:57:43 <TRACE> p_rip6_to_master6: Starting
2020-08-21 05:57:43 <TRACE> p_rip6_to_master6: State changed to up
2020-08-21 05:57:43 <INFO> Started
2020-08-21 05:57:43 <TRACE> kernel4 < interface lo goes up
2020-08-21 05:57:43 <TRACE> kernel4 < interface eth0 goes up
2020-08-21 05:57:43 <TRACE> kernel4 < interface eth1 goes up
2020-08-21 05:57:43 <TRACE> kernel6 < interface lo goes up
2020-08-21 05:57:43 <TRACE> kernel6 < interface eth0 goes up
2020-08-21 05:57:43 <TRACE> kernel6 < interface eth1 goes up
2020-08-21 05:57:43 <TRACE> p_static4_to_master4 < added 192.168.20.0/24 unicast
2020-08-21 05:57:43 <TRACE> p_static4_to_master4 > added [best] 192.168.20.0/24 unicast
2020-08-21 05:57:43 <TRACE> p_master4_to_kernel4 < added 192.168.20.0/24 unicast
2020-08-21 05:57:43 <TRACE> p_master4_to_kernel4 > added [best] 192.168.20.0/24 unicast
2020-08-21 05:57:43 <TRACE> p_master4_to_kernel4 < rejected by protocol 192.168.20.0/24 unicast
2020-08-21 05:57:43 <TRACE> kernel4 < added 192.168.20.0/24 unicast
2020-08-21 05:57:43 <TRACE> p_static4_to_master4 < rejected by protocol 192.168.20.0/24 unicast
2020-08-21 05:57:43 <INFO> rip to master
2020-08-21 05:57:43 <INFO> (enum 30)1
2020-08-21 05:57:43 <TRACE> p_rip4_to_master4 < filtered out 192.168.20.0/24 unicast
2020-08-21 05:57:43 <TRACE> p_static4_to_master4 < rejected by protocol 192.168.20.0/24 unicast
2020-08-21 05:57:43 <TRACE> p_static6_to_master6 < added fc20::/64 unicast
2020-08-21 05:57:43 <TRACE> p_static6_to_master6 > added [best] fc20::/64 unicast
2020-08-21 05:57:43 <TRACE> p_master6_to_kernel6 < added fc20::/64 unicast
2020-08-21 05:57:43 <TRACE> p_master6_to_kernel6 > added [best] fc20::/64 unicast
2020-08-21 05:57:43 <TRACE> p_master6_to_kernel6 < rejected by protocol fc20::/64 unicast
2020-08-21 05:57:43 <TRACE> kernel6 < added fc20::/64 unicast
2020-08-21 05:57:43 <TRACE> p_static6_to_master6 < rejected by protocol fc20::/64 unicast
2020-08-21 05:57:43 <INFO> rip to master
2020-08-21 05:57:43 <INFO> (enum 30)1
2020-08-21 05:57:43 <TRACE> p_rip6_to_master6 < filtered out fc20::/64 unicast
2020-08-21 05:57:43 <TRACE> p_static6_to_master6 < rejected by protocol fc20::/64 unicast
2020-08-21 05:57:43 <TRACE> rip4 < interface lo goes up
2020-08-21 05:57:43 <TRACE> rip4 < interface eth0 goes up
2020-08-21 05:57:43 <TRACE> rip4: Adding interface eth0
2020-08-21 05:57:43 <TRACE> rip4 < interface eth1 goes up
2020-08-21 05:57:43 <TRACE> rip6 < interface lo goes up
2020-08-21 05:57:43 <TRACE> rip6 < interface eth0 goes up
2020-08-21 05:57:43 <TRACE> rip6: Adding interface eth0
2020-08-21 05:57:43 <TRACE> rip6 < interface eth1 goes up
2020-08-21 05:57:43 <INFO> rip to master
2020-08-21 05:57:43 <INFO> (enum 30)1
2020-08-21 05:57:43 <TRACE> p_rip4_to_master4 < filtered out 192.168.20.0/24 unicast
2020-08-21 05:57:43 <INFO> rip to master
2020-08-21 05:57:43 <INFO> (enum 30)1
2020-08-21 05:57:43 <TRACE> p_rip6_to_master6 < filtered out fc20::/64 unicast
2020-08-21 05:57:43 <TRACE> kernel4: Scanning routing table
2020-08-21 05:57:43 <TRACE> kernel4: Pruning table t_kernel4
2020-08-21 05:57:43 <TRACE> kernel4: Pruning inherited routes
2020-08-21 05:57:43 <TRACE> kernel6: Pruning table t_kernel6
2020-08-21 05:57:43 <TRACE> kernel6: Pruning inherited routes
2020-08-21 05:57:43 <TRACE> rip6: Starting interface eth0
2020-08-21 05:57:43 <TRACE> rip4: Starting interface eth0
2020-08-21 05:57:43 <TRACE> rip4: Interface timer fired for eth0
2020-08-21 05:57:43 <TRACE> rip4: Sending triggered updates for eth0
2020-08-21 05:57:43 <TRACE> rip6: Interface timer fired for eth0
2020-08-21 05:57:43 <TRACE> rip6: Sending triggered updates for eth0
2020-08-21 05:57:45 <TRACE> rip4: Interface timer fired for eth0
2020-08-21 05:57:45 <TRACE> rip4: Sending regular updates for eth0
2020-08-21 05:57:46 <TRACE> rip6: Interface timer fired for eth0
2020-08-21 05:57:46 <TRACE> rip6: Sending regular updates for eth0
2020-08-21 05:57:50 <TRACE> rip4: Interface timer fired for eth0
2020-08-21 05:57:50 <TRACE> rip4: Sending regular updates for eth0