1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| int SetLocalNetMask(const char *szNetMask) { int sock_netmask; char netmask_addr[32]; struct ifreq ifr_mask; struct sockaddr_in *sin_net_mask; if( szNetMask == NULL) { return -1; } sock_netmask = socket( AF_INET, SOCK_STREAM, 0 ); if( sock_netmask == -1) { perror("Not create network socket connect/n"); return -1; } memset(&ifr_mask, 0, sizeof(ifr_mask)); strcpy(ifr_mask.ifr_name, "eth0"); sin_net_mask = (struct sockaddr_in *)&ifr_mask.ifr_netmask; sin_net_mask -> sin_family = AF_INET; inet_pton(AF_INET, szNetMask, &sin_net_mask ->sin_addr); if(ioctl(sock_netmask, SIOCSIFNETMASK, &ifr_mask ) < 0) { printf("sock_netmask ioctl error/n"); return -1; }
close(sock_netmask); return 0; }
|