How to get interface index from interface ip addres
linux, networking, tcp
Solution
You should be able to do this with getifaddrs(). It should account for MarkR's concern about secondary addresses. As a test,
After adding something like this:
ip addr add 192.168.25.23/24 dev eth0
compiling and running the example program on the man page should show something like:
lo address family: 17 (AF_PACKET)
eth0 address family: 17 (AF_PACKET)
lo address family: 2 (AF_INET)
address: <127.0.0.1>
eth0 address family: 2 (AF_INET)
address: <192.168.1.105>
eth0 address family: 2 (AF_INET)
address: <192.168.25.23>
lo address family: 10 (AF_INET6)
address: <::1>
eth0 address family: 10 (AF_INET6)
address: <fe84::82d6:baaf:fe14:4c22%eth0>
You should be able to get the index as you traverse the list but you can also additionally look at the if_nametoindex(), if_indextoname(), and if_nameindex() functions. Since you will be able to associate an address with an interface name you could just call these as appropriate.
Problem
Can anyone tell me how to get interface index from interface ip address? e.g. If interface ip address is 192.168.23.25 then what is it's interface index. I want to add on that i need to use it in one code written in c so if any function with some option can give me the interface index number on the base of the interface ip address.