sdhcp

simple dhcp client
git clone git://git.2f30.org/sdhcp.git
Log | Files | Refs | LICENSE

commit 9cd8b81473192dc0bc5476fba506d0ee995f6494
parent fafdfd63ff3595a27718bd3a44a35488f1282d33
Author: Michael Forney <mforney@mforney.org>
Date:   Wed, 14 Nov 2018 18:40:41 -0800

Add hostname option to DHCP messages

Diffstat:
sdhcp.c | 7+++++++
1 file changed, 7 insertions(+), 0 deletions(-)

diff --git a/sdhcp.c b/sdhcp.c @@ -8,6 +8,7 @@ #include <errno.h> #include <fcntl.h> +#include <limits.h> #include <poll.h> #include <signal.h> #include <stdint.h> @@ -62,6 +63,7 @@ enum { OBrouter = 3, OBnameserver = 5, OBdnsserver = 6, + OBhostname = 12, OBbaddr = 28, ODipaddr = 50, /* 0x32 */ ODlease = 51, @@ -88,6 +90,7 @@ unsigned char magic[] = { 99, 130, 83, 99 }; /* conf */ static unsigned char xid[sizeof(bp.xid)]; static unsigned char hwaddr[16]; +static char hostname[HOST_NAME_MAX + 1]; static time_t starttime; static char *ifname = "eth0"; static unsigned char cid[16]; @@ -278,6 +281,7 @@ dhcpsend(int type, int how) p = bp.optdata; p = hnoptput(p, ODtype, type, 1); p = optput(p, ODclientid, cid, sizeof(cid)); + p = optput(p, OBhostname, (unsigned char *)hostname, strlen(hostname)); switch (type) { case DHCPdiscover: @@ -542,6 +546,9 @@ main(int argc, char *argv[]) memset(&ifreq, 0, sizeof(ifreq)); signal(SIGTERM, cleanexit); + if (gethostname(hostname, sizeof(hostname)) == -1) + eprintf("gethostname:"); + if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) == -1) eprintf("socket:"); if (setsockopt(sock, SOL_SOCKET, SO_BROADCAST, &bcast, sizeof(bcast)) == -1)