Use source address in get_nexthop() call
Otherwise the nexthop returned might belong to a different route than the one actually used with the current source address.
This commit is contained in:
@@ -269,13 +269,13 @@ METHOD(kernel_interface_t, get_source_addr, host_t*,
|
||||
}
|
||||
|
||||
METHOD(kernel_interface_t, get_nexthop, host_t*,
|
||||
private_kernel_interface_t *this, host_t *dest)
|
||||
private_kernel_interface_t *this, host_t *dest, host_t *src)
|
||||
{
|
||||
if (!this->net)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
return this->net->get_nexthop(this->net, dest);
|
||||
return this->net->get_nexthop(this->net, dest, src);
|
||||
}
|
||||
|
||||
METHOD(kernel_interface_t, get_interface, char*,
|
||||
|
||||
@@ -282,7 +282,7 @@ struct kernel_interface_t {
|
||||
* Does a route lookup to get the source address used to reach dest.
|
||||
* The returned host is allocated and must be destroyed.
|
||||
* An optional src address can be used to check if a route is available
|
||||
* for given source to dest.
|
||||
* for the given source to dest.
|
||||
*
|
||||
* @param dest target destination address
|
||||
* @param src source address to check, or NULL
|
||||
@@ -296,11 +296,13 @@ struct kernel_interface_t {
|
||||
*
|
||||
* Does a route lookup to get the next hop used to reach dest.
|
||||
* The returned host is allocated and must be destroyed.
|
||||
* An optional src address can be used to check if a route is available
|
||||
* for the given source to dest.
|
||||
*
|
||||
* @param dest target destination address
|
||||
* @return next hop address, NULL if unreachable
|
||||
*/
|
||||
host_t* (*get_nexthop)(kernel_interface_t *this, host_t *dest);
|
||||
host_t* (*get_nexthop)(kernel_interface_t *this, host_t *dest, host_t *src);
|
||||
|
||||
/**
|
||||
* Get the interface name of a local address.
|
||||
|
||||
@@ -42,7 +42,7 @@ struct kernel_net_t {
|
||||
* Does a route lookup to get the source address used to reach dest.
|
||||
* The returned host is allocated and must be destroyed.
|
||||
* An optional src address can be used to check if a route is available
|
||||
* for given source to dest.
|
||||
* for the given source to dest.
|
||||
*
|
||||
* @param dest target destination address
|
||||
* @param src source address to check, or NULL
|
||||
@@ -55,11 +55,14 @@ struct kernel_net_t {
|
||||
*
|
||||
* Does a route lookup to get the next hop used to reach dest.
|
||||
* The returned host is allocated and must be destroyed.
|
||||
* An optional src address can be used to check if a route is available
|
||||
* for the given source to dest.
|
||||
*
|
||||
* @param dest target destination address
|
||||
* @param src source address to check, or NULL
|
||||
* @return next hop address, NULL if unreachable
|
||||
*/
|
||||
host_t* (*get_nexthop)(kernel_net_t *this, host_t *dest);
|
||||
host_t* (*get_nexthop)(kernel_net_t *this, host_t *dest, host_t *src);
|
||||
|
||||
/**
|
||||
* Get the interface name of a local address.
|
||||
|
||||
Reference in New Issue
Block a user