{
isc_result_t status, waitstatus;
dhcpctl_handle connection;
- dhcpctl_handle host_handle;
+ dhcpctl_handle host_handle, group_handle;
dhcpctl_data_string cid, ip_addr;
- dhcpctl_data_string result;
+ dhcpctl_data_string result, groupname;
status = dhcpctl_initialize ();
if (status != ISC_R_SUCCESS) {
exit (1);
}
+ /* Create a named group that contains the values we want to assign
+ to the host. */
+ memset (&group_handle, 0, sizeof group_handle);
+ status = dhcpctl_new_object (&group_handle, connection, "group");
+ if (status != ISC_R_SUCCESS) {
+ fprintf (stderr, "dhcpctl_new_object: %s\n",
+ isc_result_totext (status));
+ exit (1);
+ }
+
+ status = dhcpctl_set_string_value (group_handle, "
+option domain-name \"foo.org\";
+option domain-name-servers 10.0.0.1, 10.0.0.2;",
+ "statements");
+ if (status != ISC_R_SUCCESS) {
+ fprintf (stderr, "dhcpctl_set_value: %s\n",
+ isc_result_totext (status));
+ exit (1);
+ }
+
+ status = dhcpctl_open_object (group_handle, connection,
+ DHCPCTL_CREATE | DHCPCTL_EXCL);
+ if (status != ISC_R_SUCCESS) {
+ fprintf (stderr, "dhcpctl_open_object: %s\n",
+ isc_result_totext (status));
+ exit (1);
+ }
+
+ status = dhcpctl_wait_for_completion (group_handle, &waitstatus);
+ if (status != ISC_R_SUCCESS) {
+ fprintf (stderr, "dhcpctl_wait_for_completion: %s\n",
+ isc_result_totext (status));
+ exit (1);
+ }
+ if (waitstatus != ISC_R_SUCCESS) {
+ fprintf (stderr, "group object create: %s\n",
+ isc_result_totext (waitstatus));
+ exit (1);
+ }
+
+ memset (&groupname, 0, sizeof groupname);
+ status = dhcpctl_get_value (&groupname, group_handle, "name");
+ if (status != ISC_R_SUCCESS) {
+ fprintf (stderr, "dhcpctl_get_value: %s\n",
+ isc_result_totext (status));
+ exit (1);
+ }
+
+ printf ("group name = %*s\n", groupname -> len, groupname -> value);
+
memset (&host_handle, 0, sizeof host_handle);
status = dhcpctl_new_object (&host_handle, connection, "host");
if (status != ISC_R_SUCCESS) {
exit (1);
}
-#if 0
+#if 1
memset (&cid, 0, sizeof cid);
status = omapi_data_string_new (&cid, 6, "main");
if (status != ISC_R_SUCCESS) {
cid -> value [0] = 0; cid -> value [1] = 0x10;
cid -> value [2] = 0x5a; cid -> value [3] = 0xf8;
cid -> value [4] = 0x00; cid -> value [5] = 0xbb;
-#endif
+ status = dhcpctl_set_value (host_handle,
+ cid, "dhcp-client-identifier");
+#else
status = dhcpctl_set_string_value (host_handle, "grosse",
"dhcp-client-identifier");
if (status != ISC_R_SUCCESS) {
isc_result_totext (status));
exit (1);
}
+#endif
- status = dhcpctl_set_string_value (host_handle, "test", "group");
+ status = dhcpctl_set_value (host_handle, groupname, "group");
if (status != ISC_R_SUCCESS) {
fprintf (stderr, "dhcpctl_set_value: %s\n",
isc_result_totext (status));
exit (1);
}
+#if 0
memset (&ip_addr, 0, sizeof ip_addr);
status = omapi_data_string_new (&ip_addr, 4, "main");
if (status != ISC_R_SUCCESS) {
isc_result_totext (status));
exit (1);
}
+#endif
/* Set the known flag to 1. */
status = dhcpctl_set_boolean_value (host_handle, 1, "known");