Program analysis (pseudocode if possible)

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Vusi

    #1

    Program analysis (pseudocode if possible)

    #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_FAILU RE, "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_FAILU RE, "%s: unimplemented." , argv[0]);
    }

    if (getifaddrs(&if ap) == -1)
    err(EXIT_FAILUR E, "ioctl");

    for (ifa_iter = ifap; ifa_iter; ifa_iter = ifa_iter->ifa_next)
    if (strcmp(ifa_ite r->ifa_name, argv[1]) == 0)
    break;

    if (!ifa_iter)
    errx(EXIT_FAILU RE, "no such interface as %s", argv[1]);

    for (ifa_iter = ifap; ifa_iter; ifa_iter = ifa_iter->ifa_next) {
    if (strcmp(ifa_ite r->ifa_name, argv[1]) != 0)
    continue;
    if (ifa_iter->ifa_addr->sa_family == AF_LINK)
    break;
    }

    if (!ifa_iter)
    errx(EXIT_FAILU RE, "no link-level address for %s", argv[1]);

    sdl = (struct sockaddr_dl *)ifa_iter->ifa_addr;

    (void)memcpy(&m ac, LLADDR(sdl), sizeof(mac));
    masklen = mac_to_ip(&mac, ab_to_ip, &iaddr);
    rc = sockaddr_snprin tf(buf, sizeof(buf), "%a", iaddr);
    if (rc == -1 || rc >= sizeof(buf))
    errx(EXIT_FAILU RE, "%s: sockaddr_snprin tf", getprogname());
    sockaddr_free(i addr);
    (void)printf("% s/%d\n", buf, masklen);

    freeifaddrs(ifa p);
    return 0;
    }

  • Diez B. Roggisch

    #2
    Re: Program analysis (pseudocode if possible)



    Comment

    • Bruno Desthuilliers

      #3
      Re: Program analysis (pseudocode if possible)

      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_FAILU RE, "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_FAILU RE, "%s: unimplemented." , argv[0]);
      }
      >
      if (getifaddrs(&if ap) == -1)
      err(EXIT_FAILUR E, "ioctl");
      >
      for (ifa_iter = ifap; ifa_iter; ifa_iter = ifa_iter->ifa_next)
      if (strcmp(ifa_ite r->ifa_name, argv[1]) == 0)
      break;
      >
      if (!ifa_iter)
      errx(EXIT_FAILU RE, "no such interface as %s", argv[1]);
      >
      for (ifa_iter = ifap; ifa_iter; ifa_iter = ifa_iter->ifa_next) {
      if (strcmp(ifa_ite r->ifa_name, argv[1]) != 0)
      continue;
      if (ifa_iter->ifa_addr->sa_family == AF_LINK)
      break;
      }
      >
      if (!ifa_iter)
      errx(EXIT_FAILU RE, "no link-level address for %s", argv[1]);
      >
      sdl = (struct sockaddr_dl *)ifa_iter->ifa_addr;
      >
      (void)memcpy(&m ac, LLADDR(sdl), sizeof(mac));
      masklen = mac_to_ip(&mac, ab_to_ip, &iaddr);
      rc = sockaddr_snprin tf(buf, sizeof(buf), "%a", iaddr);
      if (rc == -1 || rc >= sizeof(buf))
      errx(EXIT_FAILU RE, "%s: sockaddr_snprin tf", getprogname());
      sockaddr_free(i addr);
      (void)printf("% s/%d\n", buf, masklen);
      >
      freeifaddrs(ifa p);
      return 0;
      }
      >
      <pseudocode>

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

      --
      bruno desthuilliers
      python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
      p in 'onurb@xiludom. gro'.split('@')])"

      Comment

      • Paul McGuire

        #4
        Re: Program analysis (pseudocode if possible)

        "Bruno Desthuilliers" <onurb@xiludom. growrote in message
        news:44a93c41$0 $22783$626a54ce @news.free.fr.. .
        <snip>
        <pseudocode>
        >
        BEGIN PROGRAM
        read_this('http ://www.catb.org/~esr/faqs/smart-questions.html' )
        do_your_homewor k()
        if (cant_figure_it _out)
        post_specific_q uestion_on_rele vant_newsgroup( "comp.lang. c")
        END PROGRAM
        >
        --
        bruno desthuilliers
        python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
        p in 'onurb@xiludom. gro'.split('@')])"

        Comment

        • Bruno Desthuilliers

          #5
          Re: Program analysis (pseudocode if possible)

          Paul McGuire wrote:
          "Bruno Desthuilliers" <onurb@xiludom. growrote in message
          news:44a93c41$0 $22783$626a54ce @news.free.fr.. .
          <snip>
          >
          >><pseudocode >
          >>
          >>BEGIN PROGRAM
          > read_this('http ://www.catb.org/~esr/faqs/smart-questions.html' )
          > do_your_homewor k()
          >
          if (cant_figure_it _out)
          BEGIN
          post_specific_q uestion_on_rele vant_newsgroup( "comp.lang. c")
          answer =
          post_specific_q uestion_on_rele vant_newsgroup( "comp.lang. c")
          assert answer == DO_YOUR_HOMEWOR K
          END IF
          >>END PROGRAM
          >>
          >>--
          >>bruno desthuilliers
          >>python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
          >>p in 'onurb@xiludom. gro'.split('@')])"
          >
          >
          >

          --
          bruno desthuilliers
          python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
          p in 'onurb@xiludom. gro'.split('@')])"

          Comment

          Working...