⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 getifaddrs.c

📁 samba最新软件
💻 C
字号:
/* * Unix SMB/CIFS implementation. * * libreplace getifaddrs test * * Copyright (C) Michael Adam <obnox@samba.org> 2008 * *  This program is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 3 of the License, or *  (at your option) any later version. * *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU General Public License for more details. * *  You should have received a copy of the GNU General Public License *  along with this program.  If not, see <http://www.gnu.org/licenses/>. */#ifndef AUTOCONF_TEST#include "replace.h"#include "system/network.h"#endif#ifdef HAVE_INET_NTOP#define rep_inet_ntop inet_ntop#endifstatic const char *format_sockaddr(struct sockaddr *addr,				   char *addrstring,				   socklen_t addrlen){	const char *result = NULL;	if (addr->sa_family == AF_INET) {		result = rep_inet_ntop(AF_INET,				       &((struct sockaddr_in *)addr)->sin_addr,				       addrstring,				       addrlen);#ifdef HAVE_STRUCT_SOCKADDR_IN6	} else if (addr->sa_family == AF_INET6) {		result = rep_inet_ntop(AF_INET6,				       &((struct sockaddr_in6 *)addr)->sin6_addr,				       addrstring,				       addrlen);#endif	}	return result;}int getifaddrs_test(void){	struct ifaddrs *ifs = NULL;	struct ifaddrs *ifs_head = NULL;	int ret;	ret = getifaddrs(&ifs);	ifs_head = ifs;	if (ret != 0) {		fprintf(stderr, "getifaddrs() failed: %s\n", strerror(errno));		return 1;	}	while (ifs) {		printf("%-10s ", ifs->ifa_name);		if (ifs->ifa_addr != NULL) {			char addrstring[INET6_ADDRSTRLEN];			const char *result;			result = format_sockaddr(ifs->ifa_addr,						 addrstring,						 sizeof(addrstring));			if (result != NULL) {				printf("IP=%s ", addrstring);			}			if (ifs->ifa_netmask != NULL) {				result = format_sockaddr(ifs->ifa_netmask,							 addrstring,							 sizeof(addrstring));				if (result != NULL) {					printf("NETMASK=%s", addrstring);				}			} else {				printf("AF=%d ", ifs->ifa_addr->sa_family);			}		} else {			printf("<no address>");		}		printf("\n");		ifs = ifs->ifa_next;	}	freeifaddrs(ifs_head);	return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -