작업 중에 IP가 부여된 NIC를 조회하는 코드가 필요했다.
자주 애용할 것 같아서 코드로만 남겨둔다.
소스코드
#include <sys/types.h>
#include <ifaddrs.h>
#include <stdio.h>
#include <string.h>
#include <arpa/inet.h>
int main()
{
struct ifaddrs *addrs, *tmp;
struct sockaddr_in *sa;
char *addr;
getifaddrs(&addrs);
tmp = addrs;
while (tmp)
{
if (tmp->ifa_addr && tmp->ifa_addr->sa_family == AF_INET){
sa = (struct sockaddr_in*)tmp->ifa_addr;
addr = inet_ntoa(sa->sin_addr);
if(strcmp(tmp->ifa_name, "lo"))
printf("Iface : %s\tAddress : %s\n", tmp->ifa_name, addr);
}
tmp = tmp->ifa_next;
}
freeifaddrs(addrs);
return 0;
}
'Linux' 카테고리의 다른 글
Linux 커널버전 4.x, 5.x의 proc 파일 시스템 예제 코드 (0) | 2022.08.30 |
---|---|
Linux 커널의 TC(Traffic Control) 구조 (0) | 2022.07.15 |
새로운 소켓 옵션 생성 방법 (in Linux Kernel) (0) | 2022.04.11 |
여러 네트워크 인터페이스(NIC) 중 특정 인터페이스를 통한 통신 방법 (in Linux) (0) | 2022.01.12 |
iperf3 사용법 (0) | 2021.12.26 |