Lines Matching defs:dhcp
2 * dhcpcd - DHCP client daemon
36 #include "dhcp.h"
208 #define get_option_raw(dhcp, opt) get_option(dhcp, opt, NULL, NULL)
210 get_option(const struct dhcp_message *dhcp, uint8_t opt, int *len, int *type)
212 const uint8_t *p = dhcp->options;
213 const uint8_t *e = p + sizeof(dhcp->options);
226 opt_buffer = xmalloc(sizeof(*dhcp));
247 p = dhcp->bootfile;
248 e = p + sizeof(dhcp->bootfile);
252 p = dhcp->servername;
253 e = p + sizeof(dhcp->servername);
285 get_option_addr(struct in_addr *a, const struct dhcp_message *dhcp,
288 const uint8_t *p = get_option_raw(dhcp, option);
297 get_option_uint32(uint32_t *i, const struct dhcp_message *dhcp, uint8_t option)
299 const uint8_t *p = get_option_raw(dhcp, option);
310 get_option_uint16(uint16_t *i, const struct dhcp_message *dhcp, uint8_t option)
312 const uint8_t *p = get_option_raw(dhcp, option);
323 get_option_uint8(uint8_t *i, const struct dhcp_message *dhcp, uint8_t option)
325 const uint8_t *p = get_option_raw(dhcp, option);
414 get_option_routes(const struct dhcp_message *dhcp,
424 p = get_option(dhcp, DHO_CSR, &len, NULL);
427 p = get_option(dhcp, DHO_MSCSR, &len, NULL);
437 p = get_option(dhcp, DHO_STATICROUTE, &len, NULL);
456 p = get_option(dhcp, DHO_ROUTER, &len, NULL);
509 dhcp_message_add_addr(struct dhcp_message *dhcp,
515 p = dhcp->options;
521 len = p - (uint8_t *)dhcp;
522 if (len + 6 > sizeof(*dhcp)) {
537 struct dhcp_message *dhcp;
549 dhcp = xzalloc(sizeof (*dhcp));
550 m = (uint8_t *)dhcp;
551 p = dhcp->options;
559 dhcp->ciaddr = iface->addr.s_addr;
562 dhcp->ciaddr = lease->addr.s_addr;
565 dhcp->op = DHCP_BOOTREQUEST;
566 dhcp->hwtype = iface->family;
570 dhcp->hwlen = iface->hwlen;
571 memcpy(&dhcp->chaddr, &iface->hwaddr, iface->hwlen);
576 dhcp->ciaddr == 0 &&
579 dhcp->flags = htons(BROADCAST_FLAG);
583 dhcp->secs = htons((uint16_t)UINT16_MAX);
585 dhcp->secs = htons(up);
587 dhcp->xid = iface->state->xid;
588 dhcp->cookie = htonl(MAGIC_COOKIE);
640 * handle DHCP packets any bigger. */
673 * confuses some DHCP servers when updating DNS.
734 /* Some crappy DHCP servers think they have to obey the BOOTP minimum
741 *message = dhcp;
746 get_lease(struct dhcp_lease *lease, const struct dhcp_message *dhcp)
750 lease->cookie = dhcp->cookie;
752 if (dhcp->yiaddr)
753 lease->addr.s_addr = dhcp->yiaddr;
755 lease->addr.s_addr = dhcp->ciaddr;
756 if (get_option_addr(&lease->net, dhcp, DHO_SUBNETMASK) == -1)
758 if (get_option_addr(&lease->brd, dhcp, DHO_BROADCAST) == -1)
760 if (get_option_uint32(&lease->leasetime, dhcp, DHO_LEASETIME) == 0) {
767 if (get_option_uint32(&lease->renewaltime, dhcp, DHO_RENEWALTIME) != 0)
769 if (get_option_uint32(&lease->rebindtime, dhcp, DHO_REBINDTIME) != 0)
771 if (get_option_addr(&lease->server, dhcp, DHO_SERVERID) != 0)