Sending to a non-local network without default netif set

classic Classic list List threaded Threaded
12 messages Options
Reply | Threaded
Open this post in threaded view
|

Sending to a non-local network without default netif set

Mark Lvov
Hello,

I have two network interfaces: ethernet and ppp (they obviously don't
share a subnet). I need to open a number of TCP connections with the
requirement, that certain connections must be opened via a particular
interface. I was trying to achieve that by binding to an address-port
prior to connecting, where the address corresponds to an address of a
particular interface.

However, I've noticed that when the destination is not in the same
network with any of the interfaces, the packets fail to route, even
though the default gateway on the interface is defined (so there
should be no problem routing the packet).

While reading the source of ip4.c I've realized, that
* the source address is not considered, which means, that binding to a
particular address before connecting is apparently meaningless
* the gw, that's set on the interface is not considered
I understand, that gw *is* considered in etharp_output, but since it
is called after ip_route, it is never reached. etharp_output is not
relevant for ppp, too.

I see, there's the notion of a "default" interface, but I believe,
that it does not apply to my case, since is a requirement, that
certain connections must go through certain interfaces.

Hopefully, I've managed to express my question adequately.

Is there anything that could be done? I see, that I could define
LWIP_HOOK_IP4_ROUTE, but, unfortunately, it does not receive the
source address as an argument, so that would not work.

Maybe, I am missing something obvious?

Thanks in advance,
Mark

_______________________________________________
lwip-users mailing list
[hidden email]
https://lists.nongnu.org/mailman/listinfo/lwip-users
Reply | Threaded
Open this post in threaded view
|

Re: Sending to a non-local network without default netif set

goldsimon@gmx.de
Mark Lvov wrote:

> [..] certain connections must be opened via a particular
> interface. I was trying to achieve that by binding to an address-port
> prior to connecting, where the address corresponds to an address of a
> particular interface.
> [..]
> Is there anything that could be done? I see, that I could define
> LWIP_HOOK_IP4_ROUTE, but, unfortunately, it does not receive the
> source address as an argument, so that would not work.
>
> Maybe, I am missing something obvious?

I don't think you missed something obvious other than that lwIP wasn't meant to support the things you want to do. The routing hook you found was meant to support better routing, but it might not be enough for you.

In cases like this, ask yourself how would you write the same application on windows or Linux? Normally you'd have to adjust the routing table. And at least on windows, IPv4 routing takes the target address only. So you'd have to set up a routing table for all your target addresses and use it to decide in your routing hook function without the need of binding to a local IP address of one of the interfaces. Wouldn't that work? Aren't the destination addresses unique for your application?

Simon

_______________________________________________
lwip-users mailing list
[hidden email]
https://lists.nongnu.org/mailman/listinfo/lwip-users
Reply | Threaded
Open this post in threaded view
|

Re: Sending to a non-local network without default netif set

Mark Lvov
Thanks for the great suggestion, Simon!

Yes, what you suggest would work.. almost! Indeed, the destination
addresses are there in the configuration (along with the interfaces
associated with those destinations), so, theoretically, I could indeed
route based on destination address only. Problem is, its not the
destination address, but the address-port tuple. I am not sure how
probable is the configuration where you have similar destination
addresses associated with different network interfaces, but it
certainly is possible and I can not really enforce the uniqueness of
destination addresses. So, while this is definitely a good way to
handle multihomed configurations in general, I'll have to do it some
other way.

Perhaps, I'll borrow the idea from this bug report:
http://savannah.nongnu.org/bugs/?34683

Thanks again.

Mark

On Fri, Aug 8, 2014 at 12:11 AM, Simon Goldschmidt <[hidden email]> wrote:

> Mark Lvov wrote:
>
>> [..] certain connections must be opened via a particular
>> interface. I was trying to achieve that by binding to an address-port
>> prior to connecting, where the address corresponds to an address of a
>> particular interface.
>> [..]
>> Is there anything that could be done? I see, that I could define
>> LWIP_HOOK_IP4_ROUTE, but, unfortunately, it does not receive the
>> source address as an argument, so that would not work.
>>
>> Maybe, I am missing something obvious?
>
> I don't think you missed something obvious other than that lwIP wasn't meant to support the things you want to do. The routing hook you found was meant to support better routing, but it might not be enough for you.
>
> In cases like this, ask yourself how would you write the same application on windows or Linux? Normally you'd have to adjust the routing table. And at least on windows, IPv4 routing takes the target address only. So you'd have to set up a routing table for all your target addresses and use it to decide in your routing hook function without the need of binding to a local IP address of one of the interfaces. Wouldn't that work? Aren't the destination addresses unique for your application?
>
> Simon
>
> _______________________________________________
> lwip-users mailing list
> [hidden email]
> https://lists.nongnu.org/mailman/listinfo/lwip-users

_______________________________________________
lwip-users mailing list
[hidden email]
https://lists.nongnu.org/mailman/listinfo/lwip-users
Reply | Threaded
Open this post in threaded view
|

Re: Sending to a non-local network without default netif set

Fabian Koch-2
Hey Mark, Simon,

well it does work when introducing the source address in the routing algorithm and thats what I did for now.
But obviously, Simon is right: routing doesn't have anything to do with the source address and it shouldn't have to.

The underlying problem in LwIP at the moment is that the ip_route() function is used to determine the netif that we should be sending on when it's not already clear and that leads to most of the problems, because in that early state of determining

There are several functions where LwIP uses the output of ip_route() to find a local interface to send on. And in those cases, it actually _should_ consider the source address (meaning the bind() address). When actually _sending_ the packet, the ip_route() should work as usual like any routing algorithm does. Only based on destination.

Ip_route() is used in a few places other than the IP layer to determine the local netif to send on:
    in udp_connect()
    in udp_sendto()
    in tcp_eff_send_mss()
    in snmp_send_trap()
    in etharp_add_static_entry()

Essentially, those placed need to get a different function which considers more info than ip_route().
Then you also do not need to touch both the ipv6 and the ipv4 version of the route function.

But yeah, if you need a quick solution that doesn't quite "feel" right, using the source address in ip_route() is a way to go for now ;o)

Cheers,
Fabian

PS: I also wrote an open issue about this on my experimental fork of lwip on github:
https://github.com/tabascoeye/lwip/issues/5
(pull-requests are welcomed)

_______________________________________________
lwip-users mailing list
[hidden email]
https://lists.nongnu.org/mailman/listinfo/lwip-users
Reply | Threaded
Open this post in threaded view
|

Re: Sending to a non-local network without default netif set

HaaCee2
In response to the remark:
"Simon is right: routing doesn't have anything to do with the source address and it shouldn't have to"

I think Simon is not right (no pun intended).
I am not entirely familiar with the ideas behind LwIP. But sourcebased routing is very much in line with rfc1122 (ip for hosts). I quote:
Under the Strong ES model, the route computation for an outgoing datagram is the mapping:

                         route(src IP addr, dest IP addr, TOS) -> gateway

Here the source address is included as a parameter in order to select a gateway that is directly reachable on the corresponding physical interface. Note that this model logically requires that in general there be at least one default gateway, and preferably multiple defaults, for each IP source address.
We are facing a similar challenge with our project and we need a similar mechanism. Is the adaptation of the ip_route available somewhere in the community?

Regards,

Erik van Veelen
Reply | Threaded
Open this post in threaded view
|

Re: Sending to a non-local network without default netif set

goldsimon@gmx.de
HaaCee2 wrote:

> I am not entirely familiar with the ideas behind LwIP. But sourcebased
> routing is very much in line with rfc1122 (ip for hosts). I quote:
>
>> Under the Strong ES model, the route computation for an outgoing datagram
>> is the mapping:
>>
>>                           route(src IP addr, dest IP addr, TOS) -> gateway
>>
>> Here the source address is included as a parameter in order to select a
>> gateway that is directly reachable on the corresponding physical
>> interface. Note that this model logically requires that in general there
>> be at least one default gateway, and preferably multiple defaults, for
>> each IP source address.

Well, that excerpt is one of 2 possibilities in the RFC. The other
possibility is to do like lwIP does. I admit though that it looks kind
of strange sending packets with IP address A to the interface B just
because you have a matching destination gateway on that netif...

By now, I'm tempted to add source-based routing as an option, although I
expect people using lwIP wih more than one interface being only a small
percentage...


Simon

_______________________________________________
lwip-users mailing list
[hidden email]
https://lists.nongnu.org/mailman/listinfo/lwip-users
Reply | Threaded
Open this post in threaded view
|

Re: Sending to a non-local network without default netif set

HaaCee2

On 14-11-14 20:27, Simon Goldschmidt [via lwIP] wrote:
HaaCee2 wrote:

> I am not entirely familiar with the ideas behind LwIP. But sourcebased
> routing is very much in line with rfc1122 (ip for hosts). I quote:
>
>> Under the Strong ES model, the route computation for an outgoing datagram
>> is the mapping:
>>
>>                           route(src IP addr, dest IP addr, TOS) -> gateway
>>
>> Here the source address is included as a parameter in order to select a
>> gateway that is directly reachable on the corresponding physical
>> interface. Note that this model logically requires that in general there
>> be at least one default gateway, and preferably multiple defaults, for
>> each IP source address.

Well, that excerpt is one of 2 possibilities in the RFC. The other
possibility is to do like lwIP does. I admit though that it looks kind
of strange sending packets with IP address A to the interface B just
because you have a matching destination gateway on that netif...
You are correct that it is only 1 of the 2 possibilities, and as indicated I am not familiar with the design of lwIP. So it's a perfectly valid choice NOT to support sourcebased routing.

By now, I'm tempted to add source-based routing as an option, although I
expect people using lwIP wih more than one interface being only a small
percentage...
I beg to differ....
In my opinion the best approach to deal with vlans is to have multiple interfaces and then I think one is required to do sourcebased routing. Otherwise datagrams destined for a host on one vlan can be visible on another vlan (which is obviously undesirable).
Multiple stacks is a possibility here as well, but in embedded designs hardly an option....

Erik


Simon

_______________________________________________
lwip-users mailing list
[hidden email]
https://lists.nongnu.org/mailman/listinfo/lwip-users



If you reply to this email, your message will be added to the discussion below:
http://lwip.100.n7.nabble.com/Sending-to-a-non-local-network-without-default-netif-set-tp22981p23524.html
To unsubscribe from Sending to a non-local network without default netif set, click here.
NAML

--
Erik van Veelen
AimValley B.V.
Utrechtseweg 38, 1213 TV Hilversum, The Netherlands
Tel: +31 35 689 1929, Fax: +31 35 689 1901
AimValley certificate http://www.aimvalley.com/aimvalley-ca-certificate-2007.crt
Reply | Threaded
Open this post in threaded view
|

Re: Sending to a non-local network without default netif set

goldsimon@gmx.de
HaaCee2 wrote:
I beg to differ....

I've added a task for this to the tracker:

https://savannah.nongnu.org/task/index.php?13397


Simon

_______________________________________________
lwip-users mailing list
[hidden email]
https://lists.nongnu.org/mailman/listinfo/lwip-users
Reply | Threaded
Open this post in threaded view
|

Re: Sending to a non-local network without default netif set

Fabian Koch-2

Hey Simon, Hey Erik,

 

we do have a setup with two netifs and we cannot determine what the customer will do with the device so we need to also check for „same subnet“ scenarios.


I already wrote and email to this (or devel?) list about that a while ago.

 

We also attacked the problem by including the src IP into the ip_route() function and I can provide a patch, but it just doesn’t feel right.

 

The reason this is needed is actually because LwIP uses ip_route() to find a netif when the local address is INADDR_ANY.

 

In udp_connect(), udp_sendto(), tcp_eff_send_mss(), snmp_send_trap() and etharp_add_static_entry().

 

In all those cases, ip_route() is actually not really a good function to find a matching netif. If we were to replace those instances with another function that is a bit more complicated and finds a fitting netif with more aspects including gateway settings and network reachability (if that’s even a word…) then it would make the final routing a bit easier.

 

Also, the default_netif construct is just too simple to make all this work correctly.

 

If you need a quick solution, you can make ip_route include the src, but then you also have to add that parameter to tcp_eff_send_mss().

 

Our middle part of ip_route() looks like this at the moment:

 

  /* iterate through netifs */

  for (netif = netif_list; netif != NULL; netif = netif->next) {

    if (netif_is_up(netif) && netif_is_link_up(netif)) {           //only consider interfaces which are up and have a link

      if(ip_addr_isany(src)) {    //when the source IP is INADDR_ANY, the socket is not bound to an interface => find the first match (netmask or is broadcast)

        if (ip_addr_netcmp(dest, &(netif->ip_addr), &(netif->netmask)) || ip_addr_cmp(IP_ADDR_BROADCAST, dest)) {

          /* return netif on which to forward IP packet (first matching netif when socket is not bound) */

          return netif;

        }

      } else { // socket is bound to a specific IP so only match the right netif (matching IPs and either fits netmask or is broadcast)

        if(ip_addr_cmp((&netif->ip_addr), src) && (ip_addr_netcmp(dest, &(netif->ip_addr), &(netif->netmask)) || ip_addr_cmp(IP_ADDR_BROADCAST, dest))) {

          /* this socket is bound to a specific interface, so look for that */

          return netif;

        }

      }

    }

  }

 

This essentially makes sending on specific interfaces possible when they are bound to the IP. Unbound sockets just send on the best matching netif they can find.

 

For this to work, you also need to netif_set_link_up(&loop_netif) in netif.c if you’re using a loopback netif. (I wonder if it can be considered a bug that the loopif never gets a link up…)

 

I would still not like this in the main lwIP source tree, since it just doesn’t feel right to include the src IP here.

 

 

Cheers,

Fabian

 

From: lwip-users-bounces+fabian.koch=[hidden email] [mailto:lwip-users-bounces+fabian.koch=[hidden email]] On Behalf Of [hidden email]
Sent: Freitag, 14. November 2014 21:29
To: Mailing list for lwIP users
Subject: Re: [lwip-users] Sending to a non-local network without default netif set

 

HaaCee2 wrote:

I beg to differ....


I've added a task for this to the tracker:

https://savannah.nongnu.org/task/index.php?13397


Simon


_______________________________________________
lwip-users mailing list
[hidden email]
https://lists.nongnu.org/mailman/listinfo/lwip-users
Reply | Threaded
Open this post in threaded view
|

Re: Sending to a non-local network without default netif set

Joel Cunningham-2
In reply to this post by Fabian Koch-2
"we do have a setup with two netifs and we cannot determine what the customer will do with the device so we need to also check for „same subnet“ scenarios."

I would like to make a clear distinction between two possible "same subnet scenarios"

1) A multi-homed product is connected to the same logical network via two (or more) different links.  One example is a laptop connected to the same LAN via a wired Ethernet connection and a wireless connection.  This is a valid configuration and both links will have the same subnet of the LAN. Stacks like Windows support this and assign an interface metric to the out going interfaces.  The metric is used in picking an outgoing interface.

2) A multi-homed product is connected to two (or more) separate physical networks that have the same subnet.  The important differences is that the links are to different separate physical networks.  Since the subnets are the same, different networks can no longer be identified at the IP address abstraction level.  This can be considered an invalid network configuration since different IP networks are identified by their subnet/address range.

I'm all in favor of supporting 1) in LwIP as long as the implementation meets the "light-weight" requirements, but I'm not a fan of supporting 2).  This case is a huge pain because it permits invalid network configurations.  Not to mention, from the application layer you have to introduce some other identifier for addressing the different networks (can't use subnet). You end up having to forcing sockets onto the appropriate network with SO_BINDTODEVICE.  If we want LwIP to detect a case like 2) that would be fine, but then how to do you tell the difference between 1 & 2?

Joel

On Nov 17, 2014, at 06:34 AM, Fabian Koch <[hidden email]> wrote:

Hey Simon, Hey Erik,

 

we do have a setup with two netifs and we cannot determine what the customer will do with the device so we need to also check for „same subnet“ scenarios.


I already wrote and email to this (or devel?) list about that a while ago.

 

We also attacked the problem by including the src IP into the ip_route() function and I can provide a patch, but it just doesn’t feel right.

 

The reason this is needed is actually because LwIP uses ip_route() to find a netif when the local address is INADDR_ANY.

 

In udp_connect(), udp_sendto(), tcp_eff_send_mss(), snmp_send_trap() and etharp_add_static_entry().

 

In all those cases, ip_route() is actually not really a good function to find a matching netif. If we were to replace those instances with another function that is a bit more complicated and finds a fitting netif with more aspects including gateway settings and network reachability (if that’s even a word…) then it would make the final routing a bit easier.

 

Also, the default_netif construct is just too simple to make all this work correctly.

 

If you need a quick solution, you can make ip_route include the src, but then you also have to add that parameter to tcp_eff_send_mss().

 

Our middle part of ip_route() looks like this at the moment:

 

  /* iterate through netifs */

  for (netif = netif_list; netif != NULL ; netif = netif-> next ) {

    if ( netif_is_up (netif) && netif_is_link_up (netif)) {           //only consider interfaces which are up and have a link

      if ( ip_addr_isany (src)) {    //when the source IP is INADDR_ANY, the socket is not bound to an interface => find the first match (netmask or is broadcast)

         if ( ip_addr_netcmp (dest, &(netif->ip_addr), &(netif-> netmask )) || ip_addr_cmp ( IP_ADDR_BROADCAST , dest)) {

          /* return netif on which to forward IP packet (first matching netif when socket is not bound) */

          return netif;

        }

      } else { // socket is bound to a specific IP so only match the right netif (matching IPs and either fits netmask or is broadcast)

        if ( ip_addr_cmp ((&netif-> ip_addr ), src) && ( ip_addr_netcmp (dest, &(netif->ip_addr), &(netif-> netmask )) || ip_addr_cmp ( IP_ADDR_BROADCAST , dest))) {

          /* this socket is bound to a specific interface, so look for that */

          return netif;

        }

      }

    }

  }

 

This essentially makes sending on specific interfaces possible when they are bound to the IP. Unbound sockets just send on the best matching netif they can find.

 

For this to work, you also need to netif_set_link_up(&loop_netif) in netif.c if you’re using a loopback netif. (I wonder if it can be considered a bug that the loopif never gets a link up…)

 

I would still not like this in the main lwIP source tree, since it just doesn’t feel right to include the src IP here.

 

 

Cheers,

Fabian

 

From: lwip-users-bounces+fabian.koch=[hidden email] [mailto:lwip-users-bounces+fabian.koch=[hidden email]] On Behalf Of [hidden email]
Sent: Freitag, 14. November 2014 21:29
To: Mailing list for lwIP users
Subject: Re: [lwip-users] Sending to a non-local network without default netif set

 

HaaCee2 wrote:

I beg to differ....


I've added a task for this to the tracker:

https://savannah.nongnu.org/task/index.php?13397


Simon

_______________________________________________
lwip-users mailing list
[hidden email]
https://lists.nongnu.org/mailman/listinfo/lwip-users

_______________________________________________
lwip-users mailing list
[hidden email]
https://lists.nongnu.org/mailman/listinfo/lwip-users
Reply | Threaded
Open this post in threaded view
|

Re: Sending to a non-local network without default netif set

HaaCee2
Isn't 1 Link-layer multiplexing instead of multihoming? The rfc1122
mentions this explicitly as NOT being multi-homing:

<quote>

  Finally, we note another possibility that is NOT
             multihoming:  one logical interface may be bound to multiple
             physical interfaces, in order to increase the reliability or
             throughput between directly connected machines by providing
             alternative physical paths between them.  For instance, two
             systems might be connected by multiple point-to-point links.
             We call this "link-layer multiplexing".

</quote>

Besides that there is another configuration that is valid multi-homing:
3) a product is connected to 2 or more separate LOGICAL networks (i.e.
vlans). Since the logical networks are separate there can be no
assumption as to the address/subnets that may occur on any of the VLANs.
Since frames 'belonging' to one VLAN MUST be restricted to that VLAN
which is identified by the interface (source address).
This is not nescessarily a same subnet scenario but more an
'indistinguishable subnet' scenario.

Reply | Threaded
Open this post in threaded view
|

Re: Sending to a non-local network without default netif set

Fabian Koch-2
In reply to this post by Joel Cunningham-2

Hey Joel,

 

well yes. I was talking about the scenario you describe in 1).

Although my experience with the windows stack in this world has always been: “the last connected interface wins and is used for default gateway” which always sucked when my 100Mbit cable was detected first and the wireless connection last (when transferring big files).

The solution was to unplug/replug the Ethernet cable.

 

But yeah. The other scenario in my opinion is simply a misconfiguration and can never work in real life so we shouldn’t strive to support that at all.

 

I don’t see LwIP in a routing/switching context, so VLAN is also a topic that I would not expect to be covered by us. Normal clients don’t need to be aware of VLAN tagging as this is usually done between switches.

 

IP forwarding and “real” routing is also out of scope for LwIP imho.

 

But still. We do support multiple netifs, so we should make an effort to support configurations that come to mind easily, like two or more netifs on the same subnet.

 

“Trunking” or “bonding” or “link bundling” (e.g. LACP) is also out of scope for LwIP imho.

 

Hope you guys agree.

 

Cheers,
Fabian

 

From: lwip-users-bounces+fabian.koch=[hidden email] [mailto:lwip-users-bounces+fabian.koch=[hidden email]] On Behalf Of Joel Cunningham
Sent: Dienstag, 18. November 2014 15:51
To: Mailing list for lwIP users
Cc: Mailing list for lwIP users
Subject: Re: [lwip-users] Sending to a non-local network without default netif set

 

"we do have a setup with two netifs and we cannot determine what the customer will do with the device so we need to also check for „same subnet“ scenarios."

I would like to make a clear distinction between two possible "same subnet scenarios"

1) A multi-homed product is connected to the same logical network via two (or more) different links.  One example is a laptop connected to the same LAN via a wired Ethernet connection and a wireless connection.  This is a valid configuration and both links will have the same subnet of the LAN. Stacks like Windows support this and assign an interface metric to the out going interfaces.  The metric is used in picking an outgoing interface.

2) A multi-homed product is connected to two (or more) separate physical networks that have the same subnet.  The important differences is that the links are to different separate physical networks.  Since the subnets are the same, different networks can no longer be identified at the IP address abstraction level.  This can be considered an invalid network configuration since different IP networks are identified by their subnet/address range.

I'm all in favor of supporting 1) in LwIP as long as the implementation meets the "light-weight" requirements, but I'm not a fan of supporting 2).  This case is a huge pain because it permits invalid network configurations.  Not to mention, from the application layer you have to introduce some other identifier for addressing the different networks (can't use subnet). You end up having to forcing sockets onto the appropriate network with SO_BINDTODEVICE.  If we want LwIP to detect a case like 2) that would be fine, but then how to do you tell the difference between 1 & 2?

Joel


On Nov 17, 2014, at 06:34 AM, Fabian Koch <[hidden email]> wrote:

Hey Simon, Hey Erik,

 

we do have a setup with two netifs and we cannot determine what the customer will do with the device so we need to also check for „same subnet“ scenarios.


I already wrote and email to this (or devel?) list about that a while ago.

 

We also attacked the problem by including the src IP into the ip_route() function and I can provide a patch, but it just doesn’t feel right.

 

The reason this is needed is actually because LwIP uses ip_route() to find a netif when the local address is INADDR_ANY.

 

In udp_connect(), udp_sendto(), tcp_eff_send_mss(), snmp_send_trap() and etharp_add_static_entry().

 

In all those cases, ip_route() is actually not really a good function to find a matching netif. If we were to replace those instances with another function that is a bit more complicated and finds a fitting netif with more aspects including gateway settings and network reachability (if that’s even a word…) then it would make the final routing a bit easier.

 

Also, the default_netif construct is just too simple to make all this work correctly.

 

If you need a quick solution, you can make ip_route include the src, but then you also have to add that parameter to tcp_eff_send_mss().

 

Our middle part of ip_route() looks like this at the moment:

 

  /* iterate through netifs */

  for (netif = netif_list; netif != NULL ; netif = netif-> next ) {

    if ( netif_is_up (netif) && netif_is_link_up (netif)) {           //only consider interfaces which are up and have a link

      if ( ip_addr_isany (src)) {    //when the source IP is INADDR_ANY, the socket is not bound to an interface => find the first match (netmask or is broadcast)

         if ( ip_addr_netcmp (dest, &(netif->ip_addr), &(netif-> netmask )) || ip_addr_cmp ( IP_ADDR_BROADCAST , dest)) {

          /* return netif on which to forward IP packet (first matching netif when socket is not bound) */

          return netif;

        }

      } else { // socket is bound to a specific IP so only match the right netif (matching IPs and either fits netmask or is broadcast)

        if ( ip_addr_cmp ((&netif-> ip_addr ), src) && ( ip_addr_netcmp (dest, &(netif->ip_addr), &(netif-> netmask )) || ip_addr_cmp ( IP_ADDR_BROADCAST , dest))) {

          /* this socket is bound to a specific interface, so look for that */

          return netif;

        }

      }

    }

  }

 

This essentially makes sending on specific interfaces possible when they are bound to the IP. Unbound sockets just send on the best matching netif they can find.

 

For this to work, you also need to netif_set_link_up(&loop_netif) in netif.c if you’re using a loopback netif. (I wonder if it can be considered a bug that the loopif never gets a link up…)

 

I would still not like this in the main lwIP source tree, since it just doesn’t feel right to include the src IP here.

 

 

Cheers,

Fabian

 

From: [hidden email] [[hidden email]] On Behalf Of [hidden email]
Sent: Freitag, 14. November 2014 21:29
To: Mailing list for lwIP users
Subject: Re: [lwip-users] Sending to a non-local network without default netif set

 

HaaCee2 wrote:

I beg to differ....


I've added a task for this to the tracker:

https://savannah.nongnu.org/task/index.php?13397


Simon

_______________________________________________
lwip-users mailing list
[hidden email]
https://lists.nongnu.org/mailman/listinfo/lwip-users


_______________________________________________
lwip-users mailing list
[hidden email]
https://lists.nongnu.org/mailman/listinfo/lwip-users