ALT Linux Community general discussions
 help / color / mirror / Atom feed
From: Aleksandr Blohin <sass@uustoll.ee>
To: mandrake-russian@altlinux.ru
Subject: [mdk-re] Re: [mdk-re] Linux Programming: получить список адресов
Date: Fri Mar  1 21:36:14 2002
Message-ID: <20020301203012.5beacc71.sass@uustoll.ee> (raw)
In-Reply-To: <20020301143434.GA6242@darkstar.core.uslugionline.ru>

[-- 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;
}


  parent reply	other threads:[~2002-03-01 21:36 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-03-01 17:26 Mikhail Nikitin
2002-03-01 17:53 ` Sergey Vlasov
2002-03-01 18:15   ` Mikhail Nikitin
2002-03-01 21:36 ` Aleksandr Blohin [this message]
2002-03-02 12:52   ` [mdk-re] " Mikhail Nikitin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20020301203012.5beacc71.sass@uustoll.ee \
    --to=sass@uustoll.ee \
    --cc=mandrake-russian@altlinux.ru \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

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