mirror of
https://gitlab.isc.org/isc-projects/dhcp
synced 2025-08-29 13:28:14 +00:00
Panic commit.
This commit is contained in:
parent
639b70fa45
commit
eadee39698
@ -129,6 +129,7 @@ MINORVERSION=MinorVersion
|
|||||||
#VARRUN = /etc
|
#VARRUN = /etc
|
||||||
#VARDB = /etc
|
#VARDB = /etc
|
||||||
#SCRIPT=solaris
|
#SCRIPT=solaris
|
||||||
|
#AR=/bin/true
|
||||||
##--sunos5-gcc--
|
##--sunos5-gcc--
|
||||||
|
|
||||||
## Solaris 2.5 (with Sun cc)
|
## Solaris 2.5 (with Sun cc)
|
||||||
|
@ -111,13 +111,11 @@ dhcpctl_status dhcpctl_new_object (dhcpctl_handle *h,
|
|||||||
omapi_object_t *g;
|
omapi_object_t *g;
|
||||||
isc_result_t status;
|
isc_result_t status;
|
||||||
|
|
||||||
m = dmalloc (sizeof *m, MDL);
|
m = (dhcpctl_remote_object_t *)0;
|
||||||
if (!m)
|
status = omapi_object_allocate ((omapi_object_t **)&m,
|
||||||
return ISC_R_NOMEMORY;
|
dhcpctl_remote_type, 0, MDL);
|
||||||
memset (m, 0, sizeof *m);
|
if (status != ISC_R_SUCCESS)
|
||||||
m -> type = dhcpctl_remote_type;
|
return status;
|
||||||
m -> refcnt = 1;
|
|
||||||
rc_register_mdl (&m, m, m -> refcnt);
|
|
||||||
|
|
||||||
g = (omapi_object_t *)0;
|
g = (omapi_object_t *)0;
|
||||||
status = omapi_generic_new (&g, MDL);
|
status = omapi_generic_new (&g, MDL);
|
||||||
|
167
dhcpctl/test.c
167
dhcpctl/test.c
@ -122,6 +122,7 @@ int main (argc, argv)
|
|||||||
exit (1);
|
exit (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
/* Create a named group that contains the values we want to assign
|
/* Create a named group that contains the values we want to assign
|
||||||
to the host. */
|
to the host. */
|
||||||
memset (&group_handle, 0, sizeof group_handle);
|
memset (&group_handle, 0, sizeof group_handle);
|
||||||
@ -173,6 +174,7 @@ option domain-name-servers 10.0.0.1, 10.0.0.2;",
|
|||||||
printf ("group name = %.*s\n",
|
printf ("group name = %.*s\n",
|
||||||
(int)groupname -> len,
|
(int)groupname -> len,
|
||||||
groupname -> value);
|
groupname -> value);
|
||||||
|
#endif
|
||||||
|
|
||||||
memset (&host_handle, 0, sizeof host_handle);
|
memset (&host_handle, 0, sizeof host_handle);
|
||||||
status = dhcpctl_new_object (&host_handle, connection, "host");
|
status = dhcpctl_new_object (&host_handle, connection, "host");
|
||||||
@ -191,27 +193,20 @@ option domain-name-servers 10.0.0.1, 10.0.0.2;",
|
|||||||
exit (1);
|
exit (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
cid -> value [0] = 0; cid -> value [1] = 0x10;
|
memset (&cid -> value [0], 0, 6);
|
||||||
cid -> value [2] = 0x5a; cid -> value [3] = 0xf8;
|
|
||||||
cid -> value [4] = 0x00; cid -> value [5] = 0xbb;
|
|
||||||
|
|
||||||
doitagain:
|
|
||||||
status = dhcpctl_set_value (host_handle,
|
status = dhcpctl_set_value (host_handle,
|
||||||
cid, "dhcp-client-identifier");
|
cid, "hardware-address");
|
||||||
/*#else
|
|
||||||
doitagain: */
|
|
||||||
status = dhcpctl_set_string_value (host_handle, "gnorf",
|
|
||||||
"name");
|
|
||||||
if (status != ISC_R_SUCCESS) {
|
if (status != ISC_R_SUCCESS) {
|
||||||
fprintf (stderr, "dhcpctl_set_value: %s\n",
|
fprintf (stderr, "dhcpctl_set_value: %s\n",
|
||||||
isc_result_totext (status));
|
isc_result_totext (status));
|
||||||
exit (1);
|
exit (1);
|
||||||
}
|
}
|
||||||
/*#endif*/
|
|
||||||
|
|
||||||
status = dhcpctl_set_value (host_handle, groupname, "group");
|
status = dhcpctl_set_string_value (host_handle, "gnorf",
|
||||||
|
"name");
|
||||||
if (status != ISC_R_SUCCESS) {
|
if (status != ISC_R_SUCCESS) {
|
||||||
fprintf (stderr, "dhcpctl_set_value: %s\n",
|
fprintf (stderr, "dhcpctl_set_string_value: %s\n",
|
||||||
isc_result_totext (status));
|
isc_result_totext (status));
|
||||||
exit (1);
|
exit (1);
|
||||||
}
|
}
|
||||||
@ -244,6 +239,7 @@ option domain-name-servers 10.0.0.1, 10.0.0.2;",
|
|||||||
exit (1);
|
exit (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
status = dhcpctl_set_string_value (host_handle, "\n\
|
status = dhcpctl_set_string_value (host_handle, "\n\
|
||||||
option host-name \"bar\";\n\
|
option host-name \"bar\";\n\
|
||||||
option smtp-server 10.0.0.1;",
|
option smtp-server 10.0.0.1;",
|
||||||
@ -253,6 +249,7 @@ option smtp-server 10.0.0.1;",
|
|||||||
isc_result_totext (status));
|
isc_result_totext (status));
|
||||||
exit (1);
|
exit (1);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
status = dhcpctl_open_object (host_handle, connection,
|
status = dhcpctl_open_object (host_handle, connection,
|
||||||
DHCPCTL_CREATE | DHCPCTL_EXCL);
|
DHCPCTL_CREATE | DHCPCTL_EXCL);
|
||||||
@ -264,27 +261,45 @@ option smtp-server 10.0.0.1;",
|
|||||||
|
|
||||||
status = dhcpctl_wait_for_completion (host_handle, &waitstatus);
|
status = dhcpctl_wait_for_completion (host_handle, &waitstatus);
|
||||||
if (status != ISC_R_SUCCESS) {
|
if (status != ISC_R_SUCCESS) {
|
||||||
fprintf (stderr, "dhcpctl_wait_for_completion: %s\n",
|
fprintf (stderr, "create: dhcpctl_wait_for_completion: %s\n",
|
||||||
isc_result_totext (status));
|
isc_result_totext (status));
|
||||||
exit (1);
|
exit (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (waitstatus != ISC_R_SUCCESS) {
|
if (waitstatus != ISC_R_SUCCESS) {
|
||||||
status = dhcpctl_open_object (host_handle, connection, 0);
|
|
||||||
if (status != ISC_R_SUCCESS) {
|
|
||||||
fprintf (stderr, "dhcpctl_open_object: %s\n",
|
fprintf (stderr, "dhcpctl_open_object: %s\n",
|
||||||
isc_result_totext (status));
|
isc_result_totext (waitstatus));
|
||||||
exit (1);
|
exit (1);
|
||||||
}
|
}
|
||||||
status = dhcpctl_wait_for_completion (host_handle,
|
|
||||||
&waitstatus);
|
cid -> value [0] = 0; cid -> value [1] = 0x10;
|
||||||
|
cid -> value [2] = 0x5a; cid -> value [3] = 0xf8;
|
||||||
|
cid -> value [4] = 0x00; cid -> value [5] = 0xbb;
|
||||||
|
|
||||||
|
status = dhcpctl_set_value (host_handle,
|
||||||
|
cid, "hardware-address");
|
||||||
if (status != ISC_R_SUCCESS) {
|
if (status != ISC_R_SUCCESS) {
|
||||||
fprintf (stderr, "dhcpctl_wait_for_completion: %s\n",
|
fprintf (stderr, "dhcpctl_set_value: %s\n",
|
||||||
isc_result_totext (status));
|
isc_result_totext (status));
|
||||||
exit (1);
|
exit (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
status = dhcpctl_object_update (connection, host_handle);
|
||||||
|
if (status != ISC_R_SUCCESS) {
|
||||||
|
fprintf (stderr, "dhcpctl_object_update: %s\n",
|
||||||
|
isc_result_totext (status));
|
||||||
|
exit (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
status = dhcpctl_wait_for_completion (host_handle, &waitstatus);
|
||||||
|
if (status != ISC_R_SUCCESS) {
|
||||||
|
fprintf (stderr, "update: dhcpctl_wait_for_completion: %s\n",
|
||||||
|
isc_result_totext (status));
|
||||||
|
exit (1);
|
||||||
|
}
|
||||||
|
|
||||||
if (waitstatus != ISC_R_SUCCESS) {
|
if (waitstatus != ISC_R_SUCCESS) {
|
||||||
fprintf (stderr, "dhcpctl_wait_for_completion: %s\n",
|
fprintf (stderr, "dhcpctl_object_update: %s\n",
|
||||||
isc_result_totext (waitstatus));
|
isc_result_totext (waitstatus));
|
||||||
exit (1);
|
exit (1);
|
||||||
}
|
}
|
||||||
@ -319,120 +334,44 @@ option smtp-server 10.0.0.1;",
|
|||||||
exit (1);
|
exit (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
goto doitagain;
|
memset (&cid -> value [0], 0, 6);
|
||||||
}
|
|
||||||
|
|
||||||
memset (&result, 0, sizeof result);
|
status = dhcpctl_set_value (host_handle,
|
||||||
status = dhcpctl_get_value (&result, host_handle, "name");
|
cid, "hardware-address");
|
||||||
if (status != ISC_R_SUCCESS) {
|
|
||||||
fprintf (stderr, "dhcpctl_get_value: %s\n",
|
|
||||||
isc_result_totext (status));
|
|
||||||
exit (1);
|
|
||||||
}
|
|
||||||
|
|
||||||
printf ("host name = %.*s\n", (int)result -> len, result -> value);
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
status = dhcpctl_object_remove (connection, host_handle);
|
|
||||||
if (status != ISC_R_SUCCESS) {
|
|
||||||
fprintf (stderr, "dhcpctl_object_remove: %s\n",
|
|
||||||
isc_result_totext (status));
|
|
||||||
exit (1);
|
|
||||||
}
|
|
||||||
status = dhcpctl_wait_for_completion (host_handle,
|
|
||||||
&waitstatus);
|
|
||||||
if (status != ISC_R_SUCCESS) {
|
|
||||||
fprintf (stderr, "remove: dhcpctl_wait_for_completion: %s\n",
|
|
||||||
isc_result_totext (status));
|
|
||||||
exit (1);
|
|
||||||
}
|
|
||||||
if (waitstatus != ISC_R_SUCCESS) {
|
|
||||||
fprintf (stderr, "remove: dhcpctl_wait_for_completion: %s\n",
|
|
||||||
isc_result_totext (waitstatus));
|
|
||||||
exit (1);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Create a named group that contains the values we want to assign
|
|
||||||
to the host. */
|
|
||||||
memset (&lease_handle, 0, sizeof lease_handle);
|
|
||||||
status = dhcpctl_new_object (&lease_handle, connection, "lease");
|
|
||||||
if (status != ISC_R_SUCCESS) {
|
|
||||||
fprintf (stderr, "dhcpctl_new_object: %s\n",
|
|
||||||
isc_result_totext (status));
|
|
||||||
exit (1);
|
|
||||||
}
|
|
||||||
|
|
||||||
memset (&ip_addr, 0, sizeof ip_addr);
|
|
||||||
status = omapi_data_string_new (&ip_addr, 4, MDL);
|
|
||||||
if (status != ISC_R_SUCCESS) {
|
|
||||||
fprintf (stderr, "omapi_data_string_new: %s\n",
|
|
||||||
isc_result_totext (status));
|
|
||||||
exit (1);
|
|
||||||
}
|
|
||||||
|
|
||||||
ip_addr -> value [0] = 10; ip_addr -> value [1] = 0;
|
|
||||||
ip_addr -> value [2] = 0; ip_addr -> value [3] = 4;
|
|
||||||
|
|
||||||
status = dhcpctl_set_value (lease_handle, ip_addr, "ip-address");
|
|
||||||
if (status != ISC_R_SUCCESS) {
|
if (status != ISC_R_SUCCESS) {
|
||||||
fprintf (stderr, "dhcpctl_set_value: %s\n",
|
fprintf (stderr, "dhcpctl_set_value: %s\n",
|
||||||
isc_result_totext (status));
|
isc_result_totext (status));
|
||||||
exit (1);
|
exit (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
status = dhcpctl_open_object (lease_handle, connection, 0);
|
status = dhcpctl_set_string_value (host_handle, "gnorf",
|
||||||
|
"name");
|
||||||
if (status != ISC_R_SUCCESS) {
|
if (status != ISC_R_SUCCESS) {
|
||||||
fprintf (stderr, "dhcpctl_open_object: %s\n",
|
fprintf (stderr, "dhcpctl_set_string_value: %s\n",
|
||||||
isc_result_totext (status));
|
isc_result_totext (status));
|
||||||
exit (1);
|
exit (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
status = dhcpctl_wait_for_completion (lease_handle, &waitstatus);
|
status = dhcpctl_open_object (host_handle, connection,
|
||||||
|
DHCPCTL_CREATE | DHCPCTL_EXCL);
|
||||||
if (status != ISC_R_SUCCESS) {
|
if (status != ISC_R_SUCCESS) {
|
||||||
fprintf (stderr, "dhcpctl_wait_for_completion: %s\n",
|
fprintf (stderr, "dhcpctl_open_object 2: %s\n",
|
||||||
isc_result_totext (status));
|
isc_result_totext (status));
|
||||||
exit (1);
|
exit (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
status = dhcpctl_wait_for_completion (host_handle, &waitstatus);
|
||||||
|
if (status != ISC_R_SUCCESS) {
|
||||||
|
fprintf (stderr, "create: dhcpctl_wait_for_completion: %s\n",
|
||||||
|
isc_result_totext (status));
|
||||||
|
exit (1);
|
||||||
|
}
|
||||||
|
|
||||||
if (waitstatus != ISC_R_SUCCESS) {
|
if (waitstatus != ISC_R_SUCCESS) {
|
||||||
fprintf (stderr, "lease object lookup: %s\n",
|
fprintf (stderr, "dhcpctl_open_object 2: %s\n",
|
||||||
isc_result_totext (waitstatus));
|
isc_result_totext (waitstatus));
|
||||||
exit (1);
|
exit (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
memset (&identifier, 0, sizeof identifier);
|
|
||||||
status = dhcpctl_get_value (&identifier, lease_handle,
|
|
||||||
"dhcp-client-identifier");
|
|
||||||
if (status == ISC_R_SUCCESS) {
|
|
||||||
printf ("lease client-identifier = %02x",
|
|
||||||
identifier -> value [0]);
|
|
||||||
for (i = 1; i < identifier -> len; i++) {
|
|
||||||
printf (":%02x", identifier -> value [i]);
|
|
||||||
}
|
|
||||||
putchar ('\n');
|
|
||||||
} else {
|
|
||||||
status = dhcpctl_get_value (&identifier, lease_handle,
|
|
||||||
"hardware-address");
|
|
||||||
if (status == ISC_R_SUCCESS) {
|
|
||||||
printf ("lease hardware address = %02x",
|
|
||||||
identifier -> value [0]);
|
|
||||||
for (i = 1; i < identifier -> len; i++) {
|
|
||||||
printf (":%02x", identifier -> value [i]);
|
|
||||||
}
|
|
||||||
putchar ('\n');
|
|
||||||
dhcpctl_data_string_dereference (&identifier, MDL);
|
|
||||||
status = dhcpctl_get_value (&identifier, lease_handle,
|
|
||||||
"hardware-type");
|
|
||||||
if (status == ISC_R_SUCCESS) {
|
|
||||||
printf ("lease hardware type = %d\n",
|
|
||||||
identifier -> value [0]);
|
|
||||||
dhcpctl_data_string_dereference (&identifier,
|
|
||||||
MDL);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
printf ("Unable to find identifier for lease.\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
exit (0);
|
exit (0);
|
||||||
}
|
}
|
||||||
|
@ -42,6 +42,6 @@
|
|||||||
struct udphdr {
|
struct udphdr {
|
||||||
u_int16_t uh_sport; /* source port */
|
u_int16_t uh_sport; /* source port */
|
||||||
u_int16_t uh_dport; /* destination port */
|
u_int16_t uh_dport; /* destination port */
|
||||||
int16_t uh_ulen; /* udp length */
|
u_int16_t uh_ulen; /* udp length */
|
||||||
u_int16_t uh_sum; /* udp checksum */
|
u_int16_t uh_sum; /* udp checksum */
|
||||||
};
|
};
|
||||||
|
@ -126,7 +126,7 @@
|
|||||||
the aforementioned problems do not matter to you, or if no other
|
the aforementioned problems do not matter to you, or if no other
|
||||||
API is supported for your system, you may want to go with it. */
|
API is supported for your system, you may want to go with it. */
|
||||||
|
|
||||||
/* #define USE_SOCKETS */
|
#define USE_SOCKETS
|
||||||
|
|
||||||
/* Define this to use the Sun Streams NIT API.
|
/* Define this to use the Sun Streams NIT API.
|
||||||
|
|
||||||
|
@ -290,13 +290,43 @@ isc_result_t omapi_set_value (omapi_object_t *h,
|
|||||||
omapi_typed_data_t *value)
|
omapi_typed_data_t *value)
|
||||||
{
|
{
|
||||||
omapi_object_t *outer;
|
omapi_object_t *outer;
|
||||||
|
isc_result_t status;
|
||||||
|
|
||||||
|
if (!value) {
|
||||||
|
log_info ("omapi_set_value (%.*s, NULL)",
|
||||||
|
(int)name -> len, name -> value);
|
||||||
|
} else if (value -> type == omapi_datatype_int) {
|
||||||
|
log_info ("omapi_set_value (%.*s, %ld)",
|
||||||
|
(int)name -> len, name -> value,
|
||||||
|
(long)value -> u.integer);
|
||||||
|
} else if (value -> type == omapi_datatype_string) {
|
||||||
|
log_info ("omapi_set_value (%.*s, %.*s)",
|
||||||
|
(int)name -> len, name -> value,
|
||||||
|
(int)value -> u.buffer.len, value -> u.buffer.value);
|
||||||
|
} else if (value -> type == omapi_datatype_data) {
|
||||||
|
log_info ("omapi_set_value (%.*s, %ld %lx)",
|
||||||
|
(int)name -> len, name -> value,
|
||||||
|
(long)value -> u.buffer.len,
|
||||||
|
(unsigned long)value -> u.buffer.value);
|
||||||
|
} else if (value -> type == omapi_datatype_object) {
|
||||||
|
log_info ("omapi_set_value (%.*s, %s)",
|
||||||
|
(int)name -> len, name -> value,
|
||||||
|
value -> u.object
|
||||||
|
? (value -> u.object -> type
|
||||||
|
? value -> u.object -> type -> name
|
||||||
|
: "(unknown object)")
|
||||||
|
: "(unknown object)");
|
||||||
|
}
|
||||||
|
|
||||||
for (outer = h; outer -> outer; outer = outer -> outer)
|
for (outer = h; outer -> outer; outer = outer -> outer)
|
||||||
;
|
;
|
||||||
if (outer -> type -> set_value)
|
if (outer -> type -> set_value)
|
||||||
return (*(outer -> type -> set_value)) (outer,
|
status = (*(outer -> type -> set_value)) (outer,
|
||||||
id, name, value);
|
id, name, value);
|
||||||
return ISC_R_NOTFOUND;
|
else
|
||||||
|
status = ISC_R_NOTFOUND;
|
||||||
|
log_info (" ==> %s", isc_result_totext (status));
|
||||||
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
isc_result_t omapi_set_value_str (omapi_object_t *h,
|
isc_result_t omapi_set_value_str (omapi_object_t *h,
|
||||||
|
@ -50,7 +50,7 @@
|
|||||||
|
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
static char copyright[] =
|
static char copyright[] =
|
||||||
"$Id: omapi.c,v 1.35 2000/09/08 01:34:30 mellon Exp $ Copyright (c) 1999-2000 The Internet Software Consortium. All rights reserved.\n";
|
"$Id: omapi.c,v 1.36 2000/09/27 23:37:44 mellon Exp $ Copyright (c) 1999-2000 The Internet Software Consortium. All rights reserved.\n";
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
|
|
||||||
#include "dhcpd.h"
|
#include "dhcpd.h"
|
||||||
@ -973,9 +973,8 @@ isc_result_t dhcp_host_signal_handler (omapi_object_t *h,
|
|||||||
host = (struct host_decl *)h;
|
host = (struct host_decl *)h;
|
||||||
|
|
||||||
if (!strcmp (name, "updated")) {
|
if (!strcmp (name, "updated")) {
|
||||||
if ((host -> interface.hlen == 0 ||
|
/* There must be a client identifier of some sort. */
|
||||||
host -> interface.hbuf [0] == 0 ||
|
if (host -> interface.hlen == 0 &&
|
||||||
host -> interface.hlen > 17) &&
|
|
||||||
!host -> client_identifier.len)
|
!host -> client_identifier.len)
|
||||||
return ISC_R_INVALIDARG;
|
return ISC_R_INVALIDARG;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user