<div dir="ltr"><div><div><div><div><div><div><div><div><div><div><div><div><div><div>Hi,<br><br></div>In 5.1.1 get_route() in kernel_netlink_net.c has a 'recursion' parameter to terminate self-recursion when the count is greater than 2.<br>
</div>I am using 4.4.1 which does not have this parameter and ran into a situation that once in a while get_source_addr() calls<br></div>this, latches on the gateway address of a static route, and loops forever on that gateway address until it blows the stack.<br>
<br></div>The recursion count trick should work in our case but we have a second problem. Some of the route table entries created by charon at the bottom of kernel_netlink_ipsec.c add_policy() point at the wrong peer address. I am wondering if the two<br>
</div>problems are related.<br><br></div>Can anyone shed some light on what could cause these 2 problems?<br><br></div>I have no idea how the netlink interface work. Notice that  get_route does this:<br></div>1. this->socket->send()<br>
</div>2. lock mutex<br></div>3. for loop to process msg<br></div>4. unlock mutex <br><br></div>Is it possible that after step 1 send():<br>- another thread sends a different msg, <br>- eats up the response intended for the current thread, <br>
- and leave behind the wrong response for the current thread to pick up?<br><br></div>Thanks,<br></div>Sailnije<br><div><div><div><br></div></div></div></div>