Marian D Marinov ÐÐÐÐÑÐ: > ÐÑÐÐÐÐÑÐÑÐÐÐÐ ÐÑÐÐÐ ÐÐ ÑÐ ÐÐÐÐÐÑ ÐÐ ÐÐÐÐÐÑÑÐÐ > ÐÐÐÐÑÐÐÐÑÐ ÐÐÐÐÐÐÐ ÐÐ ÐÐ ÐÐÑÐÑÐ > ÐÐÐ ÐÐ ÑÐÐÐ ÑÐ ÑÐÑÐÑ ÑÐÐÐ ÑÐÐÐ ÐÐÐÐÑÐÑ :) ÐÐÐÑÐ > ÐÐ ÐÐÐÐÐÐÐ ÐÐ ÐÐÑÑÐÑÐ ÐÐÑÐÐ > ÐÐ ÐÐÑÐÑÐÐÐ ÐÐÐÐ ÑÐÐÐ ÐÑÐÐÑÐÐ ÑÐÑÐÐÑÐÐÐ ÐÐ > ÐÐÐÐÐÐÐ ÐÐ ÐÐÐÐÐÐÑÐÐ ÐÐÐÐÐÐÐ ÐÐ > ÐÐÑÐÑ ÑÐÑÐÐ ÐÐ firewalls Ð shapers? > > ÐÐÐÐÑÐÐÐ > Ð.ÐÐÑÐÐÐÐ
ÐÐÐÑ ÑÐ ÐÐ Ð ÑÐÐÑÑÐÐ ÑÐÐÐÐÐÐÑÐÐÐÑÐ ÐÐ ÐÐÐÐÐÐÐ ÐÐÐÐÐÐÑÐÑÐÐ ÐÐÐÐÑÐ ÐÐ C ÐÐÑÐÐÐ ÑÐÐÐÑÐ ÐÑÐÑÐÐÐ, ÐÐ ÐÑÐÑÐÐÐ ÑÐÐÐ ÐÑÐ ÐÐÐÐ (ÐÐÐÑÑÑÐÐÑÑÐÐ, ÐÐÐ ipv6 Ð Ñ.Ð.) ÐÑÐÐÐÑ ÐÐÐ ÐÑÐÐÑÐÐÐÐ ÐÐÐÐÑ ÐÐ ÑÐ ÐÑÐÐÑÑ ÑÐÐÐÐÐ ÐÐÑÐ. ÐÐ ÐÑÐÐÐÐ ÐÐÐÐ ÐÐ Ð ÐÑ ÐÐÐÐÐ. ÐÐÐÐÐÐÐÑÐ ÑÐ Ñ "gcc -s -o inetaddrof inetaddrof.c" Ð ÐÐÑÐÐ "./inetaddrof eth0" ÐÐÐÑÐÐÐÑ.
#include <arpa/inet.h> #include <linux/if.h> #include <stdio.h> #include <stdlib.h> #include <sys/ioctl.h> #include <sys/socket.h> int main(int ARGC, char *ARGV[]) { fclose(stdin); if(2 != ARGC) { fprintf(stderr, "Usage: %s interface_name\n", *ARGV); return EXIT_FAILURE; } if(strlen(*(ARGV + 1)) >= IFNAMSIZ) { fprintf(stderr, "%s: too long to be an interface name\n", *(ARGV + 1)); return EXIT_FAILURE; } int f = socket(PF_INET, SOCK_DGRAM, 0); if(-1 == f) { perror("socket"); return EXIT_FAILURE; } struct ifreq ifr; strcpy((char*)&ifr, *(ARGV + 1)); if(-1 == ioctl(f, SIOCGIFADDR, &ifr)) { perror("ioctl"); return EXIT_FAILURE; } printf("%s", inet_ntoa(((struct sockaddr_in*)&ifr.ifr_ifru.ifru_addr)->sin_addr)); return EXIT_SUCCESS; }