Lines Matching refs:dhcp

38 #include "dhcp.h"
303 #define get_option_raw(dhcp, opt) get_option(dhcp, opt, NULL, NULL)
305 get_option(const struct dhcp_message *dhcp, uint8_t opt, int *len, int *type)
307 const uint8_t *p = dhcp->options;
308 const uint8_t *e = p + sizeof(dhcp->options);
325 opt_buffer = xmalloc(sizeof(*dhcp));
346 p = dhcp->bootfile;
347 e = p + sizeof(dhcp->bootfile);
351 p = dhcp->servername;
352 e = p + sizeof(dhcp->servername);
384 get_option_addr(struct in_addr *a, const struct dhcp_message *dhcp,
387 const uint8_t *p = get_option_raw(dhcp, option);
396 get_option_uint32(uint32_t *i, const struct dhcp_message *dhcp, uint8_t option)
398 const uint8_t *p = get_option_raw(dhcp, option);
409 get_option_uint16(uint16_t *i, const struct dhcp_message *dhcp, uint8_t option)
411 const uint8_t *p = get_option_raw(dhcp, option);
422 get_option_uint8(uint8_t *i, const struct dhcp_message *dhcp, uint8_t option)
424 const uint8_t *p = get_option_raw(dhcp, option);
718 get_option_string(const struct dhcp_message *dhcp, uint8_t option)
725 p = get_option(dhcp, option, &len, &type);
782 get_option_routes(const struct dhcp_message *dhcp,
792 p = get_option(dhcp, DHO_CSR, &len, NULL);
795 p = get_option(dhcp, DHO_MSCSR, &len, NULL);
810 p = get_option(dhcp, DHO_STATICROUTE, &len, NULL);
829 p = get_option(dhcp, DHO_ROUTER, &len, NULL);
882 dhcp_message_add_addr(struct dhcp_message *dhcp,
888 p = dhcp->options;
894 len = p - (uint8_t *)dhcp;
895 if (len + 6 > sizeof(*dhcp)) {
910 struct dhcp_message *dhcp;
922 dhcp = xzalloc(sizeof (*dhcp));
923 m = (uint8_t *)dhcp;
924 p = dhcp->options;
932 dhcp->ciaddr = iface->addr.s_addr;
935 dhcp->ciaddr = lease->addr.s_addr;
938 dhcp->op = DHCP_BOOTREQUEST;
939 dhcp->hwtype = iface->family;
943 dhcp->hwlen = iface->hwlen;
944 memcpy(&dhcp->chaddr, &iface->hwaddr, iface->hwlen);
949 dhcp->ciaddr == 0 &&
952 dhcp->flags = htons(BROADCAST_FLAG);
956 dhcp->secs = htons((uint16_t)UINT16_MAX);
958 dhcp->secs = htons(up);
960 dhcp->xid = iface->state->xid;
961 dhcp->cookie = htonl(MAGIC_COOKIE);
1114 *message = dhcp;
1119 write_lease(const struct interface *iface, const struct dhcp_message *dhcp)
1122 ssize_t bytes = sizeof(*dhcp);
1123 const uint8_t *p = dhcp->options;
1124 const uint8_t *e = p + sizeof(dhcp->options);
1129 if (is_bootp(dhcp)) {
1154 bytes = p - (const uint8_t *)dhcp;
1163 bytes = write(fd, dhcp, bytes);
1172 struct dhcp_message *dhcp;
1184 dhcp = xmalloc(sizeof(*dhcp));
1185 memset(dhcp, 0, sizeof(*dhcp));
1186 bytes = read(fd, dhcp, sizeof(*dhcp));
1189 free(dhcp);
1190 dhcp = NULL;
1192 return dhcp;
1382 configure_env(char **env, const char *prefix, const struct dhcp_message *dhcp,
1397 get_option_uint8(&overl, dhcp, DHO_OPTIONSOVERLOADED);
1405 if (get_option_raw(dhcp, opt->option))
1408 if (dhcp->yiaddr || dhcp->ciaddr)
1410 if (*dhcp->bootfile && !(overl & 1))
1412 if (*dhcp->servername && !(overl & 2))
1418 if (dhcp->yiaddr || dhcp->ciaddr) {
1421 addr.s_addr = dhcp->yiaddr ? dhcp->yiaddr : dhcp->ciaddr;
1423 if (get_option_addr(&net, dhcp, DHO_SUBNETMASK) == -1) {
1429 if (get_option_addr(&brd, dhcp, DHO_BROADCAST) == -1) {
1433 addr.s_addr = dhcp->yiaddr & net.s_addr;
1437 if (*dhcp->bootfile && !(overl & 1))
1438 setvar(&ep, prefix, "filename", (const char *)dhcp->bootfile);
1439 if (*dhcp->servername && !(overl & 2))
1440 setvar(&ep, prefix, "server_name", (const char *)dhcp->servername);
1448 p = get_option(dhcp, opt->option, &pl, NULL);
1470 get_lease(struct dhcp_lease *lease, const struct dhcp_message *dhcp)
1474 lease->cookie = dhcp->cookie;
1476 if (dhcp->yiaddr)
1477 lease->addr.s_addr = dhcp->yiaddr;
1479 lease->addr.s_addr = dhcp->ciaddr;
1480 if (get_option_addr(&lease->net, dhcp, DHO_SUBNETMASK) == -1)
1482 if (get_option_addr(&lease->brd, dhcp, DHO_BROADCAST) == -1)
1484 if (get_option_uint32(&lease->leasetime, dhcp, DHO_LEASETIME) == 0) {
1491 if (get_option_uint32(&lease->renewaltime, dhcp, DHO_RENEWALTIME) != 0)
1493 if (get_option_uint32(&lease->rebindtime, dhcp, DHO_REBINDTIME) != 0)
1495 if (get_option_addr(&lease->server, dhcp, DHO_SERVERID) != 0)