• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/ap/gpl/dnsmasq-2.15/src/

Lines Matching defs:mess

60 static void bootp_option_put(struct dhcp_packet *mess, char *filename, char *sname);
66 static unsigned char *option_find(struct dhcp_packet *mess, int size, int opt_type);
88 struct dhcp_packet *mess = &daemon->dhcp_packet->data;
89 unsigned char *p = mess->options + sizeof(u32); /* skip cookie */
103 if (mess->op != BOOTREQUEST)
112 if (mess->htype != ARPHRD_ETHER)
114 if (mess->htype != ARPHRD_ETHER && mess->htype != ARPHRD_IEEE802)
118 mess->htype, iface_name);
122 if (mess->hlen != ETHER_ADDR_LEN)
126 if ((opt = option_find(mess, sz, OPTION_MESSAGE_TYPE)))
131 if (*((u32 *)&mess->options) != htonl(DHCP_COOKIE))
136 if ((option_find(mess, sz, OPTION_REQUESTED_IP) || mess_type == DHCPDISCOVER))
137 mess->ciaddr.s_addr = 0;
140 if ((opt = option_find(mess, sz, OPTION_SUBNET_SELECT)))
149 (mess->giaddr.s_addr ? mess->giaddr :
150 (mess->ciaddr.s_addr ? mess->ciaddr : iface_addr));
175 subnet_addr.s_addr ? inet_ntoa(subnet_addr) : (mess->giaddr.s_addr ? inet_ntoa(mess->giaddr) : iface_name));
179 mess->op = BOOTREPLY;
184 config = find_config(daemon->dhcp_conf, context, NULL, 0, mess->chaddr, NULL);
190 char save = mess->file[128];
191 end = mess->options + 64; /* BOOTP vend area is only 64 bytes */
192 mess->yiaddr = config->addr;
193 mess->siaddr = daemon->dhcp_next_server.s_addr ? daemon->dhcp_next_server : iface_addr;
202 if (mess->file[0])
204 mess->file[128] = 0; /* ensure zero term. */
205 id.net = mess->file;
212 bootp_option_put(mess, daemon->dhcp_file, daemon->dhcp_sname);
213 p = option_end(p, end, mess);
214 log_packet(NULL, &config->addr, mess->chaddr, iface_name, NULL);
215 mess->file[128] = save;
216 return p - (unsigned char *)mess;
222 if ((opt = option_find(mess, sz, OPTION_CLIENT_ID)))
229 clid = mess->chaddr;
233 config = find_config(daemon->dhcp_conf, context, clid, clid_len, mess->chaddr, NULL);
237 else if ((opt = option_find(mess, sz, OPTION_HOSTNAME)))
270 struct dhcp_config *new = find_config(daemon->dhcp_conf, context, NULL, 0, mess->chaddr, hostname);
288 if ((opt = option_find(mess, sz, OPTION_VENDOR_ID)))
303 if ((opt = option_find(mess, sz, OPTION_USER_CLASS)))
326 clid = mess->chaddr;
335 if ((opt = option_find(mess, sz, OPTION_LEASE_TIME)))
354 if ((opt = option_find(mess, sz, OPTION_REQUESTED_OPTIONS)))
365 if (!(opt = option_find(mess, sz, OPTION_SERVER_IDENTIFIER)) ||
370 if ((opt = option_find(mess, sz, OPTION_MESSAGE)))
385 if (!(opt = option_find(mess, sz, OPTION_REQUESTED_IP)))
388 log_packet("DECLINE", option_ptr(opt), mess->chaddr, iface_name, message);
407 if (!(opt = option_find(mess, sz, OPTION_SERVER_IDENTIFIER)) ||
411 log_packet("RELEASE", &mess->ciaddr, mess->chaddr, iface_name, NULL);
413 if (lease && lease->addr.s_addr == mess->ciaddr.s_addr)
419 if ((opt = option_find(mess, sz, OPTION_REQUESTED_IP)))
425 mess->yiaddr = config->addr;
427 mess->yiaddr = lease->addr;
430 mess->yiaddr = addr;
431 else if (!address_allocate(context, daemon, &mess->yiaddr, mess->chaddr))
433 log_packet("DISCOVER", opt ? &addr : NULL, mess->chaddr, iface_name, message);
438 bootp_option_put(mess, daemon->dhcp_file, daemon->dhcp_sname);
439 mess->siaddr = daemon->dhcp_next_server.s_addr ? daemon->dhcp_next_server : iface_addr;
451 p = option_end(p, end, mess);
453 log_packet("OFFER" , &mess->yiaddr, mess->chaddr, iface_name, NULL);
454 return p - (unsigned char *)mess;
459 else if ((opt = option_find(mess, sz, OPTION_REQUESTED_IP)))
462 mess->yiaddr = option_addr(opt);
464 if ((opt = option_find(mess, sz, OPTION_SERVER_IDENTIFIER)))
471 if (lease && lease->addr.s_addr != mess->yiaddr.s_addr)
479 if (lease_find_by_addr(mess->yiaddr))
481 else if (!(lease = lease_allocate(clid, clid_len, mess->yiaddr)))
491 if (lease->addr.s_addr != mess->yiaddr.s_addr)
499 if (!lease || mess->ciaddr.s_addr != lease->addr.s_addr)
507 mess->yiaddr = mess->ciaddr;
514 if (!is_same_net(mess->yiaddr, context->start, context->netmask))
518 else if (!address_available(context, mess->yiaddr) &&
519 (!have_config(config, CONFIG_ADDR) || config->addr.s_addr != mess->yiaddr.s_addr))
530 else if ((addr_config = config_find_by_address(daemon->dhcp_conf, mess->yiaddr)) && addr_config != config)
534 log_packet("REQUEST", &mess->yiaddr, mess->chaddr, iface_name, NULL);
538 log_packet("NAK", &mess->yiaddr, mess->chaddr, iface_name, message);
540 mess->siaddr.s_addr = mess->yiaddr.s_addr = mess->ciaddr.s_addr = 0;
541 bootp_option_put(mess, NULL, NULL);
544 p = option_end(p, end, mess);
545 mess->flags |= htons(0x8000); /* broadcast */
546 return p - (unsigned char *)mess;
549 log_packet("ACK", &mess->yiaddr, mess->chaddr, iface_name, hostname);
551 lease_set_hwaddr(lease, mess->chaddr);
556 bootp_option_put(mess, daemon->dhcp_file, daemon->dhcp_sname);
557 mess->siaddr = daemon->dhcp_next_server.s_addr ? daemon->dhcp_next_server : iface_addr;
568 p = option_end(p, end, mess);
569 return p - (unsigned char *)mess;
575 log_packet("INFORM", &mess->ciaddr, mess->chaddr, iface_name, message);
577 if (message || mess->ciaddr.s_addr == 0)
584 p = option_end(p, end, mess);
586 log_packet("ACK", &mess->ciaddr, mess->chaddr, iface_name, hostname);
587 return p - (unsigned char *)mess;
640 static void bootp_option_put(struct dhcp_packet *mess, char *filename, char *sname)
642 memset(mess->sname, 0, sizeof(mess->sname));
643 memset(mess->file, 0, sizeof(mess->file));
645 strncpy(mess->sname, sname, sizeof(mess->sname)-1);
647 strncpy(mess->file, filename, sizeof(mess->file)-1);
726 static unsigned char *option_find(struct dhcp_packet *mess, int size, int opt_type)
732 ret = option_find1(&mess->options[0] + sizeof(u32), ((unsigned char *)mess) + size, opt_type, &overload);
735 ret = option_find1(&mess->file[0], &mess->file[128], opt_type, &overload);
738 ret = option_find1(&mess->sname[0], &mess->file[64], opt_type, &overload);