* [mdk-re] Linux Programming: получить список адресов
@ 2002-03-01 17:26 Mikhail Nikitin
2002-03-01 17:53 ` Sergey Vlasov
2002-03-01 21:36 ` [mdk-re] " Aleksandr Blohin
0 siblings, 2 replies; 5+ messages in thread
From: Mikhail Nikitin @ 2002-03-01 17:26 UTC (permalink / raw)
To: ALT Linux Mailing List
Здравствуйте господа!
Пишется некоторая программа на С++ (исп. libCommmonC++).
Есть некоторое желание получить список всех текущих IP-адресов (и,
желательно, девайсов, не глядя в /proc/net/dev).
Как бы это дело обстряпать получше?
(варианты с С, Perl, awk, etc.. не предлагать ;-)
Михаил
--
UNIX is very user friendly.
It's just very selective about who its friends are.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [mdk-re] Linux Programming: получить список адресов
2002-03-01 17:26 [mdk-re] Linux Programming: получить список адресов Mikhail Nikitin
@ 2002-03-01 17:53 ` Sergey Vlasov
2002-03-01 18:15 ` Mikhail Nikitin
2002-03-01 21:36 ` [mdk-re] " Aleksandr Blohin
1 sibling, 1 reply; 5+ messages in thread
From: Sergey Vlasov @ 2002-03-01 17:53 UTC (permalink / raw)
To: mandrake-russian
On Fri, 1 Mar 2002 17:34:34 +0300
Mikhail Nikitin <mouse@uslugionline.ru> wrote:
> Пишется некоторая программа на С++ (исп. libCommmonC++).
> Есть некоторое желание получить список всех текущих IP-адресов (и,
> желательно, девайсов, не глядя в /proc/net/dev).
> Как бы это дело обстряпать получше?
>
> (варианты с С, Perl, awk, etc.. не предлагать ;-)
Ну, есть такой вариант (info libc "Interface Naming"):
#include <net/if.h>
struct if_nameindex * if_nameindex (void);
После чего доставать конфигурацию через SIOCGIF... - например,
как это делает ifconfig (apt-get source net-tools,
lib/interface.c).
Хотя я не уверен, что if_nameindex работает не через
/proc/net/dev - по крайней мере, ifconfig работает через него.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [mdk-re] Linux Programming: получить список адресов
2002-03-01 17:53 ` Sergey Vlasov
@ 2002-03-01 18:15 ` Mikhail Nikitin
0 siblings, 0 replies; 5+ messages in thread
From: Mikhail Nikitin @ 2002-03-01 18:15 UTC (permalink / raw)
To: mandrake-russian
On Fri, Mar 01, 2002 at 06:13:48PM +0300, Sergey Vlasov wrote:
> On Fri, 1 Mar 2002 17:34:34 +0300
> Mikhail Nikitin <mouse@uslugionline.ru> wrote:
>
> > Пишется некоторая программа на С++ (исп. libCommmonC++).
> > Есть некоторое желание получить список всех текущих IP-адресов (и,
> > желательно, девайсов, не глядя в /proc/net/dev).
> > Как бы это дело обстряпать получше?
> >
> > (варианты с С, Perl, awk, etc.. не предлагать ;-)
>
> Ну, есть такой вариант (info libc "Interface Naming"):
>
> #include <net/if.h>
> struct if_nameindex * if_nameindex (void);
Спасибо, список девайсов я получил можно сказать...
> После чего доставать конфигурацию через SIOCGIF... - например,
Как это (где читать)?
> как это делает ifconfig (apt-get source net-tools,
> lib/interface.c).
Смотрел... хардкорный, конечно вариант...хочется попроще..
> Хотя я не уверен, что if_nameindex работает не через
> /proc/net/dev - по крайней мере, ifconfig работает через него.
Неправда.
То есть у него есть 2 варианта - либо через /proc/net/dev либо через
syscall.
Михаил
--
UNIX is very user friendly.
It's just very selective about who its friends are.
^ permalink raw reply [flat|nested] 5+ messages in thread
* [mdk-re] Re: [mdk-re] Linux Programming: получить список адресов
2002-03-01 17:26 [mdk-re] Linux Programming: получить список адресов Mikhail Nikitin
2002-03-01 17:53 ` Sergey Vlasov
@ 2002-03-01 21:36 ` Aleksandr Blohin
2002-03-02 12:52 ` Mikhail Nikitin
1 sibling, 1 reply; 5+ messages in thread
From: Aleksandr Blohin @ 2002-03-01 21:36 UTC (permalink / raw)
To: mandrake-russian
[-- Attachment #1: Type: text/plain, Size: 759 bytes --]
On Fri, 1 Mar 2002 17:34:34 +0300
Mikhail Nikitin <mouse@uslugionline.ru> wrote:
MN> Здравствуйте господа!
MN> Пишется некоторая программа на С++ (исп. libCommmonC++).
MN> Есть некоторое желание получить список всех текущих IP-адресов (и,
MN> желательно, девайсов, не глядя в /proc/net/dev).
MN> Как бы это дело обстряпать получше?
MN> (варианты с С, Perl, awk, etc.. не предлагать ;-)
MN> Михаил
MN> --
MN> UNIX is very user friendly.
MN> It's just very selective about who its friends are.
MN> _______________________________________________
MN> Mandrake-russian mailing list
MN> Mandrake-russian@altlinux.ru
MN> http://altlinux.ru/mailman/listinfo/mandrake-russian
--
Best regards
AB
--
... In nomine Altli, et Ctrli, et Spititus Deli, Reset!
[-- Attachment #2: localaddr.c --]
[-- Type: text/plain, Size: 1322 bytes --]
# include <stdio.h>
# include <stdlib.h>
# include <errno.h>
# include <unistd.h>
# include <sys/types.h>
# include <sys/socket.h>
# include <net/if.h>
# include <sys/ioctl.h>
# include <netinet/in.h>
# include <arpa/inet.h>
int main(int argc, char* argv[]){
struct ifconf ifc;
struct ifreq *ifr, ifrcopy;
int flags;
char *buf, *ptr;
int len;
int sockfd;
struct sockaddr_in *sad;
sockfd = socket(AF_INET,SOCK_DGRAM,0);
if ( sockfd == -1 ) {
perror ("socket");
return 1;
}
len = 100 * sizeof(struct ifreq);
buf = malloc(len);
ifc.ifc_len = len;
ifc.ifc_buf = buf;
if ( ioctl(sockfd, SIOCGIFCONF, &ifc ) == -1) {
if ( errno != EINVAL ) {
perror("ioctl");
return 2;
}
else
printf("not all interfaces fit in buf\n");
}
for (ptr = buf; ptr < buf + ifc.ifc_len; ){
ifr = (struct ifreq *)ptr;
# if 1
ptr += sizeof (ifr->ifr_name) + sizeof(struct sockaddr);
# else
ptr += sizeof (ifr->ifr_name) + ifr->ifr_addr.sa_len;
# endif
ifrcopy = *ifr;
ioctl(sockfd,SIOCGIFFLAGS,&ifrcopy);
flags = ifrcopy.ifr_flags;
if ( (flags & IFF_UP) == 0 ) continue; /* interface is down */
sad = (struct sockaddr_in *)(&ifr->ifr_addr);
printf("%s %s\n", ifr->ifr_name,
inet_ntoa( sad->sin_addr) );
}
return 0;
}
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [mdk-re] Re: [mdk-re] Linux Programming: получить список адресов
2002-03-01 21:36 ` [mdk-re] " Aleksandr Blohin
@ 2002-03-02 12:52 ` Mikhail Nikitin
0 siblings, 0 replies; 5+ messages in thread
From: Mikhail Nikitin @ 2002-03-02 12:52 UTC (permalink / raw)
To: mandrake-russian
On Fri, Mar 01, 2002 at 08:30:12PM +0200, Aleksandr Blohin wrote:
> On Fri, 1 Mar 2002 17:34:34 +0300
> Mikhail Nikitin <mouse@uslugionline.ru> wrote:
>
> MN> Здравствуйте господа!
>
> MN> Пишется некоторая программа на С++ (исп. libCommmonC++).
> MN> Есть некоторое желание получить список всех текущих IP-адресов (и,
> MN> желательно, девайсов, не глядя в /proc/net/dev).
> MN> Как бы это дело обстряпать получше?
> }
>
Большое всем спасибо!
Михаил
--
UNIX is very user friendly.
It's just very selective about who its friends are.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2002-03-02 12:52 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-03-01 17:26 [mdk-re] Linux Programming: получить список адресов Mikhail Nikitin
2002-03-01 17:53 ` Sergey Vlasov
2002-03-01 18:15 ` Mikhail Nikitin
2002-03-01 21:36 ` [mdk-re] " Aleksandr Blohin
2002-03-02 12:52 ` Mikhail Nikitin
ALT Linux Community general discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 community community/ http://lore.altlinux.org/community \
mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com
public-inbox-index community
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.community
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git