1

I want to get the network interface name (like ens33, ens37 etc) from an IPv6 address which belongs to that interface from a C program in Linux. How to do that? Please help.

1 Answer 1

2

You can get a list of network interfaces using getifaddrs (Linux getting all network interface names)

below is from man page of getifaddrs

   The  getifaddrs() function creates a linked list of structures describing the network interfaces of the local system, and stores the address
   of the first item of the list in *ifap.  The list consists of ifaddrs structures, defined as follows:

       struct ifaddrs {
           struct ifaddrs  *ifa_next;    /* Next item in list */
           char            *ifa_name;    /* Name of interface */
           unsigned int     ifa_flags;   /* Flags from SIOCGIFFLAGS */
           struct sockaddr *ifa_addr;    /* Address of interface */
           struct sockaddr *ifa_netmask; /* Netmask of interface */
           union {
               struct sockaddr *ifu_broadaddr;
                                /* Broadcast address of interface */
               struct sockaddr *ifu_dstaddr;
                                /* Point-to-point destination address */
           } ifa_ifu;
       #define              ifa_broadaddr ifa_ifu.ifu_broadaddr
       #define              ifa_dstaddr   ifa_ifu.ifu_dstaddr
           void            *ifa_data;    /* Address-specific data */
       };

to do the reverse, just search the list.

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.