Home | History | Annotate | Download | only in lib

Lines Matching refs:len

15 int dhcp_unpack_field(const void *field, size_t len,
21 while (len > 1) {
25 op = *p++; len--;
31 xlen = *p++; len--;
32 if (xlen > len)
34 if (opt[op].len < 0)
35 opt[op].len = 0;
38 opt[op].len + xlen + 1);
43 memcpy((char *)opt[op].data + opt[op].len, p, xlen);
44 opt[op].len += xlen;
46 *((char *)opt[op].data + opt[op].len) = 0;
48 len -= xlen;
59 int dhcp_unpack_packet(const void *packet, size_t len,
67 if (len < 240 || pkt->magic != htonl(DHCP_VENDOR_MAGIC))
71 opt[i].len = -1; /* Option not present */
75 err = dhcp_unpack_field(pkt->options, len-240, opt);
78 if (opt[52].len == 1) {
81 opt[52].len = -1;
88 opt[67].len = strnlen((const char *)pkt->file, 128);
89 if (opt[67].len) {
90 opt[67].data = malloc(opt[67].len + 1);
92 memcpy(opt[67].data, pkt->file, opt[67].len);
93 *((char *)opt[67].data + opt[67].len) = 0;
103 opt[66].len = strnlen((const char *)pkt->sname, 64);
104 if (opt[66].len) {
105 opt[66].data = malloc(opt[66].len + 1);
107 memcpy(opt[66].data, pkt->file, opt[66].len);
108 *((char *)opt[66].data + opt[66].len) = 0;