Print this page
7388 Support DHCP Client FQDN. Allow IAID/DUID for all v4.
*** 20,29 ****
--- 20,30 ----
*/
/*
* Copyright 2010 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
+ * Copyright (c) 2016, Chris Fraire <cfraire@me.com>.
*/
#include <assert.h>
#include <ctype.h>
#include <libgen.h>
*** 37,46 ****
--- 38,48 ----
#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
#include <unistd.h>
#include <libdladm.h>
+ #include <libipadm.h>
#include "libnwam_impl.h"
#include <libnwam_priv.h>
#include <libnwam.h>
*** 71,80 ****
--- 73,83 ----
static nwam_error_t valid_link_autopush(nwam_value_t);
static nwam_error_t valid_link_mtu(nwam_value_t);
static nwam_error_t valid_ip_version(nwam_value_t);
static nwam_error_t valid_addrsrc_v4(nwam_value_t);
static nwam_error_t valid_addrsrc_v6(nwam_value_t);
+ static nwam_error_t valid_reqhost(nwam_value_t);
struct nwam_prop_table_entry ncu_prop_table_entries[] = {
{NWAM_NCU_PROP_TYPE, NWAM_VALUE_TYPE_UINT64, B_FALSE, 1, 1, valid_type,
"specifies the NCU type - valid values are \'datalink\' and \'ip\'",
NWAM_FLAG_NCU_TYPE_ALL, NWAM_FLAG_NCU_CLASS_ALL},
*** 147,157 ****
"specifies static IPv6 host address(es)",
NWAM_FLAG_NCU_TYPE_INTERFACE, NWAM_FLAG_NCU_CLASS_ALL_INTERFACE},
{NWAM_NCU_PROP_IPV6_DEFAULT_ROUTE, NWAM_VALUE_TYPE_STRING, B_FALSE, 0,
1, nwam_valid_route_v6,
"specifies per-interface default IPv6 route",
! NWAM_FLAG_NCU_TYPE_INTERFACE, NWAM_FLAG_NCU_CLASS_ALL_INTERFACE}
};
#define NWAM_NUM_NCU_PROPS (sizeof (ncu_prop_table_entries) / \
sizeof (*ncu_prop_table_entries))
--- 150,169 ----
"specifies static IPv6 host address(es)",
NWAM_FLAG_NCU_TYPE_INTERFACE, NWAM_FLAG_NCU_CLASS_ALL_INTERFACE},
{NWAM_NCU_PROP_IPV6_DEFAULT_ROUTE, NWAM_VALUE_TYPE_STRING, B_FALSE, 0,
1, nwam_valid_route_v6,
"specifies per-interface default IPv6 route",
! NWAM_FLAG_NCU_TYPE_INTERFACE, NWAM_FLAG_NCU_CLASS_ALL_INTERFACE},
! {NWAM_NCU_PROP_IP_PRIMARY, NWAM_VALUE_TYPE_BOOLEAN, B_FALSE, 0,
! 1, nwam_valid_boolean,
! "specifies the status of an interface as primary for the delivery"
! " of client-wide configuration data",
! NWAM_FLAG_NCU_TYPE_INTERFACE, NWAM_FLAG_NCU_CLASS_ALL_INTERFACE},
! {NWAM_NCU_PROP_IP_REQHOST, NWAM_VALUE_TYPE_STRING, B_FALSE, 0,
! 1, valid_reqhost,
! "specifies a requested hostname for the interface",
! NWAM_FLAG_NCU_TYPE_INTERFACE, NWAM_FLAG_NCU_CLASS_ALL_INTERFACE},
};
#define NWAM_NUM_NCU_PROPS (sizeof (ncu_prop_table_entries) / \
sizeof (*ncu_prop_table_entries))
*** 1646,1655 ****
--- 1658,1678 ----
return (NWAM_SUCCESS);
else
return (NWAM_ENTITY_INVALID_VALUE);
}
+ static nwam_error_t
+ valid_reqhost(nwam_value_t value)
+ {
+ char *hostname;
+
+ if (nwam_value_get_string(value, &hostname) != NWAM_SUCCESS)
+ return (NWAM_ENTITY_INVALID_VALUE);
+ return (ipadm_is_valid_hostname(hostname) ? NWAM_SUCCESS
+ : NWAM_ENTITY_INVALID_VALUE);
+ }
+
/* ARGSUSED0 */
static nwam_error_t
valid_link_mtu(nwam_value_t value)
{
return (NWAM_SUCCESS);