On 11/10/2017 03:51 AM, Fabian Cenedese wrote:
struct sockaddr_in addr;
s=socket(AF_INET, SOCK_DGRAM, 0);
if (s >= 0) {
         // set up port from any address to bind to
         memset(&addr, 0, sizeof(addr));
         addr.sin_len=sizeof(addr);
         addr.sin_family=AF_INET;
         addr.sin_port=PP_HTONS(port);
         addr.sin_addr.s_addr=PP_HTONL(INADDR_ANY);
         // connect
         int ret = bind(s, (struct sockaddr*)&addr, sizeof(addr));
         // should succeed
         if (ret < 0) {
                 // error
         }
         else {
                 // limit to one interface
                 struct ifreq ifr;
                 memset(&ifr, 0, sizeof(struct ifreq));
                 ifr.ifr_name[0] = 'e';// IFNAME0;
                 ifr.ifr_name[1] = '0';// IFNAME1

Unless you've made modifications to LwIP's interface naming/numbering, the name is at least least 3 characters: two chars and a number (which is also the index).  See netif_find(), which is invoked from SO_BINDTODEVICE.

                 int rc = setsockopt(s, SOL_SOCKET, SO_BINDTODEVICE,
                                 (void*)&ifr, sizeof(struct ifreq));
         }
}
Joel


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

Reply via email to