diff options
author | Ted Lemon <source@isc.org> | 1996-02-21 12:11:09 +0000 |
---|---|---|
committer | Ted Lemon <source@isc.org> | 1996-02-21 12:11:09 +0000 |
commit | 97ca16995f70c396d4d69e742953cf80edf612cd (patch) | |
tree | f8ebd8a7fe4cc5a52e32b88bdd0a1aa4b0d8949b /client/dhclient.c | |
parent | d9c6d82c49360ee7d451d7cfc20d90bf600f9f2c (diff) | |
download | isc-dhcp-97ca16995f70c396d4d69e742953cf80edf612cd.tar.gz |
Intermediate changes to support actual DHCP protocol engine
Diffstat (limited to 'client/dhclient.c')
-rw-r--r-- | client/dhclient.c | 50 |
1 files changed, 45 insertions, 5 deletions
diff --git a/client/dhclient.c b/client/dhclient.c index 0a66c41d..c9d9e64d 100644 --- a/client/dhclient.c +++ b/client/dhclient.c @@ -189,11 +189,51 @@ int main (argc, argv, envp) cons_options ((struct packet *)0, &outgoing, &decl, bufs); - memset (&raw.ciaddr, 0, sizeof raw.ciaddr); - memset (&raw.yiaddr, 0, sizeof raw.ciaddr); - memset (&raw.siaddr, 0, sizeof raw.ciaddr); - memset (&raw.giaddr, 0, sizeof raw.ciaddr); - + + if (decl.ciaddr) { + if (tree_evaluate (decl.ciaddr) != 4) + warn ("ciaddr is more" + " than one address"); + else + memcpy (&raw.ciaddr, + decl.ciaddr -> value, + decl.ciaddr -> len); + } else + memset (&raw.ciaddr, 0, sizeof raw.ciaddr); + + if (decl.yiaddr) { + if (tree_evaluate (decl.yiaddr) != 4) + warn ("yiaddr is more" + " than one address"); + else + memcpy (&raw.yiaddr, + decl.yiaddr -> value, + decl.yiaddr -> len); + } else + memset (&raw.yiaddr, 0, sizeof raw.yiaddr); + + if (decl.siaddr) { + if (tree_evaluate (decl.siaddr) != 4) + warn ("siaddr is more" + " than one address"); + else + memcpy (&raw.siaddr, + decl.siaddr -> value, + decl.siaddr -> len); + } else + memset (&raw.siaddr, 0, sizeof raw.siaddr); + + if (decl.giaddr) { + if (tree_evaluate (decl.giaddr) != 4) + warn ("giaddr is more" + " than one address"); + else + memcpy (&raw.giaddr, + decl.giaddr -> value, + decl.giaddr -> len); + } else + memset (&raw.giaddr, 0, sizeof raw.giaddr); + raw.xid = xid++; raw.xid = htons (raw.xid); raw.secs = 0; |