Vusi wrote:
> #include <err.h>
> #include <stdlib.h>
> #include <string.h>
> #include <sys/ioctl.h>
> #include <sys/types.h>
> #include <sys/socket.h>
> #include <net/route.h>
> #include <net/if.h>
> #include <netinet/in.h>
> #include <arpa/inet.h>
> #include <net/if_ether.h>
> #include <net/if_dl.h>
> #include <ifaddrs.h>
> #include <stdio.h>
> 
> #include "ipschema.h"
> #include "ssrv/sockaddr.h"
> 
> #ifndef lint
> __RCSID("$Id: ethip.c 2314 2004-12-29 01:00:25Z dyoung $");
> #endif
> 
> #define ETHIP "ethip"
> #define WLANIP "wlanip"
> #define RTMSGIP "rtip"
> #define ETH6IP "eth6ip"
> #define WLAN6IP "wlan6ip"
> 
> #define ENDSWITH(s, end) (strlen((s)) >= strlen((end)) && \
>                           strcmp((s) + strlen((s)) - strlen((end)),
> end) == 0)
> 
> void
> usage(const char *proggie)
> {
>       errx(EXIT_FAILURE, "Usage: %s <interface>", proggie);
> }
> 
> int
> main(int argc, char **argv)
> {
>       char buf[100];
>       struct sockaddr_dl *sdl;
>       int masklen, rc;
>       struct sockaddr *iaddr;
>       struct ether_addr mac;
>       struct ifaddrs *ifap, *ifa_iter;
>       ab_to_ip_t ab_to_ip;
> 
>       if (argc < 2)
>               usage(argv[0]);
> 
>       if (ENDSWITH(argv[0], ETHIP)) {
>               ab_to_ip = ab_to_eth_ip;
>       } else if (ENDSWITH(argv[0], WLANIP)) {
>               ab_to_ip = ab_to_wlan_ip;
>       } else if (ENDSWITH(argv[0], RTMSGIP)) {
>               ab_to_ip = ab_to_routemsg_ip;
>       } else if (ENDSWITH(argv[0], ETH6IP)) {
>               ab_to_ip = ab_to_eth_ip6;
>       } else {
>               errx(EXIT_FAILURE, "%s: unimplemented.", argv[0]);
>       }
> 
>       if (getifaddrs(&ifap) == -1)
>               err(EXIT_FAILURE, "ioctl");
> 
>       for (ifa_iter = ifap; ifa_iter; ifa_iter = ifa_iter->ifa_next)
>               if (strcmp(ifa_iter->ifa_name, argv[1]) == 0)
>                       break;
> 
>       if (!ifa_iter)
>               errx(EXIT_FAILURE, "no such interface as %s", argv[1]);
> 
>       for (ifa_iter = ifap; ifa_iter; ifa_iter = ifa_iter->ifa_next) {
>               if (strcmp(ifa_iter->ifa_name, argv[1]) != 0)
>                       continue;
>               if (ifa_iter->ifa_addr->sa_family == AF_LINK)
>                       break;
>       }
> 
>       if (!ifa_iter)
>               errx(EXIT_FAILURE, "no link-level address for %s", argv[1]);
> 
>       sdl = (struct sockaddr_dl *)ifa_iter->ifa_addr;
> 
>       (void)memcpy(&mac, LLADDR(sdl), sizeof(mac));
>       masklen = mac_to_ip(&mac, ab_to_ip, &iaddr);
>       rc = sockaddr_snprintf(buf, sizeof(buf), "%a", iaddr);
>       if (rc == -1 || rc >= sizeof(buf))
>               errx(EXIT_FAILURE, "%s: sockaddr_snprintf", getprogname());
>       sockaddr_free(iaddr);
>       (void)printf("%s/%d\n", buf, masklen);
> 
>       freeifaddrs(ifap);
>       return 0;
> }
> 

<pseudocode>

BEGIN PROGRAM
  read_this('http://www.catb.org/~esr/faqs/smart-questions.html')
  do_your_homework()
END PROGRAM

-- 
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in '[EMAIL PROTECTED]'.split('@')])"
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to