client id is always fixed at 16 bytes - sdhcp - simple dhcp client
 (HTM) git clone git://git.codemadness.org/sdhcp
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) LICENSE
       ---
 (DIR) commit a3a3e615d0e66b388b436196863095aede5c9dbe
 (DIR) parent 5ad98876ed3e0d8024c8e65174a675bd35ce058e
 (HTM) Author: sin <sin@2f30.org>
       Date:   Wed, 13 Jan 2016 19:34:17 +0000
       
       client id is always fixed at 16 bytes
       
       Diffstat:
         M sdhcp.c                             |      15 +++++----------
       
       1 file changed, 5 insertions(+), 10 deletions(-)
       ---
 (DIR) diff --git a/sdhcp.c b/sdhcp.c
       @@ -87,7 +87,6 @@ static unsigned char hwaddr[16];
        static time_t starttime;
        static char *ifname = "eth0";
        static unsigned char cid[16];
       -static size_t cidlen;
        static char *program = "";
        static int sock;
        /* sav */
       @@ -275,7 +274,7 @@ dhcpsend(int type, int how)
                memcpy(bp.chaddr, hwaddr, sizeof bp.chaddr);
                p = bp.optdata;
                p = hnoptput(p, ODtype, type, 1);
       -        p = optput(p, ODclientid, cid, cidlen);
       +        p = optput(p, ODclientid, cid, sizeof(cid));
        
                switch(type) {
                case DHCPdiscover:
       @@ -466,12 +465,8 @@ main(int argc, char *argv[])
        
                if (argc)
                        ifname = argv[0]; /* interface name */
       -        if (argc >= 2) {
       -                cidlen = strlen(argv[1]);
       -                if (cidlen > sizeof(cid))
       -                        cidlen = sizeof(cid);
       -                strlcpy(cid, argv[1], cidlen); /* client-id */
       -        }
       +        if (argc >= 2)
       +                strlcpy(cid, argv[1], sizeof(cid)); /* client-id */
        
                memset(&ifreq, 0, sizeof(ifreq));
                signal(SIGALRM, nop);
       @@ -491,8 +486,8 @@ main(int argc, char *argv[])
                        eprintf("bind:");
                ioctl(sock, SIOCGIFHWADDR, &ifreq);
                memcpy(hwaddr, ifreq.ifr_hwaddr.sa_data, sizeof ifreq.ifr_hwaddr.sa_data);
       -        if (!cidlen)
       -                memcpy(cid, hwaddr, cidlen = sizeof(hwaddr));
       +        if (!cid[0])
       +                memcpy(cid, hwaddr, sizeof(cid));
        
                if ((rnd = open("/dev/urandom", O_RDONLY)) == -1)
                        eprintf("can't open /dev/urandom to generate unique transaction identifier:");