mirror of
https://github.com/clearlinux/kvmtool.git
synced 2026-09-06 21:51:49 +00:00
kvm tools: Fill DHCP options with domain name and DNS server IP
Domain name and DNS server IP address are filled. Signed-off-by: Asias He <asias.hejun@gmail.com> Signed-off-by: Pekka Enberg <penberg@kernel.org>
This commit is contained in:
@@ -46,6 +46,10 @@
|
||||
#define UIP_DHCP_MAX_DOMAIN_NAME_LEN 256
|
||||
#define UIP_DHCP_TAG_MSG_TYPE 53
|
||||
#define UIP_DHCP_TAG_MSG_TYPE_LEN 1
|
||||
#define UIP_DHCP_TAG_DNS_SERVER 6
|
||||
#define UIP_DHCP_TAG_DNS_SERVER_LEN 4
|
||||
#define UIP_DHCP_TAG_DOMAIN_NAME 15
|
||||
|
||||
/*
|
||||
* IP package maxium len == 64 KBytes
|
||||
* IP header == 20 Bytes
|
||||
|
||||
@@ -64,3 +64,30 @@ out:
|
||||
fclose(fp);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int uip_dhcp_fill_option_name_and_server(struct uip_info *info, u8 *opt, int i)
|
||||
{
|
||||
u8 domain_name_len;
|
||||
u32 *addr;
|
||||
int n;
|
||||
|
||||
if (info->domain_name) {
|
||||
domain_name_len = strlen(info->domain_name);
|
||||
opt[i++] = UIP_DHCP_TAG_DOMAIN_NAME;
|
||||
opt[i++] = domain_name_len;
|
||||
memcpy(&opt[i], info->domain_name, domain_name_len);
|
||||
i += domain_name_len;
|
||||
}
|
||||
|
||||
for (n = 0; n < UIP_DHCP_MAX_DNS_SERVER_NR; n++) {
|
||||
if (info->dns_ip[n] == 0)
|
||||
continue;
|
||||
opt[i++] = UIP_DHCP_TAG_DNS_SERVER;
|
||||
opt[i++] = UIP_DHCP_TAG_DNS_SERVER_LEN;
|
||||
addr = (u32 *)&opt[i];
|
||||
*addr = htonl(info->dns_ip[n]);
|
||||
i += UIP_DHCP_TAG_DNS_SERVER_LEN;
|
||||
}
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user