<div dir="ltr">Sorry to bump this, but it would be very useful if I knew whether there's any point in pursuing this or not. Any hints?<br></div><div class="gmail_extra"><br><div class="gmail_quote">On 21 September 2017 at 14:06, George Diamantopoulos <span dir="ltr"><<a href="mailto:georgediam@gmail.com" target="_blank">georgediam@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div><div><div><div><div><div><div><div><div><span style="font-family:monospace,monospace">Hello,<br><br></span></div><span style="font-family:monospace,monospace">I have a use case where I need to have kamailio bind to a VRF device. The configuration in question is similar to the example below, where eth1 is a slave to the VRF-lite device:<br><br> +----------+      +-------------------+<br> |   eth0   |      |    vrf-green      |<br> | 1.1.1.1  |      |    127.0.0.1      |<br> +----------+      +-------------------+<br>                            |           <br>                      +----------+      <br>                      |   eth1   |    <br>                      | 2.2.2.2  |   <br>                      +----------+<br><br></span></div><span style="font-family:monospace,monospace">Both the main routing table and "vrf-green" routing table have a default route.<br><br>What I need to be able to do is have kamailio bind to both interfaces:<br><br></span></div><div style="margin-left:40px"><span style="font-family:monospace,monospace">listen=eth0:5060</span><br><span style="font-family:monospace,monospace"></span><span style="font-family:monospace,monospace"><span style="font-family:monospace,monospace">listen=vrf-green:5060</span></span><br></div><div style="margin-left:40px"><span style="font-family:monospace,monospace"><span style="font-family:monospace,monospace"></span></span></div><span style="font-family:monospace,monospace"><span style="font-family:monospace,monospace"><br></span></span></div><span style="font-family:monospace,monospace"><span style="font-family:monospace,monospace">And additionally be able to use force_send_socket to select an interface, for example:<br><br></span></span><div style="margin-left:40px"><span style="font-family:monospace,monospace"><span style="font-family:monospace,monospace">force_send_socket(udp:<a href="http://2.2.2.2:5060" target="_blank">2.2.2.2:<wbr>5060</a>);</span></span><br></div><div style="margin-left:40px"><span style="font-family:monospace,monospace"><span style="font-family:monospace,monospace"></span></span></div><span style="font-family:monospace,monospace"><span style="font-family:monospace,monospace"><br></span></span></div><span style="font-family:monospace,monospace"><span style="font-family:monospace,monospace">However, I can't get this to work. The above configuration fails because there is no listen directive for 2.2.2.2. Also, kamailio doesn't process packets received on the VRF with the above listen directives, it behaves as if it doesn't listen on 2.2.2.2 indeed.<br><br></span></span></div><span style="font-family:monospace,monospace"><span style="font-family:monospace,monospace">In addition using either of the below:<br></span></span></div><span style="font-family:monospace,monospace"><span style="font-family:monospace,monospace"><br></span></span></div><div style="margin-left:40px"><span style="font-family:monospace,monospace"><span style="font-family:monospace,monospace">listen=udp:<a href="http://2.2.2.2:5060" target="_blank">2.2.2.2:5060</a></span></span></div><div style="margin-left:40px"><span style="font-family:monospace,monospace"><span style="font-family:monospace,monospace">or</span></span><br><span style="font-family:monospace,monospace"><span style="font-family:monospace,monospace"></span></span><span style="font-family:monospace,monospace"><span style="font-family:monospace,monospace">listen=eth1:5060</span></span><br></div><div style="margin-left:40px"><span style="font-family:monospace,monospace"><span style="font-family:monospace,monospace"></span></span></div></div><span style="font-family:monospace,monospace"><span style="font-family:monospace,monospace"><br></span></span></div><span style="font-family:monospace,monospace"><span style="font-family:monospace,monospace">fails with an error upon starting kamailio.<br><br></span></span></div><span style="font-family:monospace,monospace"><span style="font-family:monospace,monospace">According to the kernel documentation:<br></span></span><pre style="margin-left:40px">Applications that are to work within a VRF need to bind their socket to the
VRF device:

    setsockopt(sd, SOL_SOCKET, SO_BINDTODEVICE, dev, strlen(dev)+1);

or to specify the output device using cmsg and IP_PKTINFO.<br></pre><pre>The question is, is VRF useable with kamailio right now? Or is development needed? Thanks!<br><br></pre><pre>BR,<br></pre><pre>George<br></pre><span style="font-family:monospace,monospace"><span style="font-family:monospace,monospace"></span></span><span style="font-family:monospace,monospace"><span style="font-family:monospace,monospace"></span></span></div>
</blockquote></div><br></div>