Print this page
7388 Support DHCP Client FQDN. Allow IAID/DUID for all v4.

@@ -18,19 +18,21 @@
  *
  * CDDL HEADER END
  */
 /*
  * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, Chris Fraire <cfraire@me.com>.
  */
 #ifndef _LIBIPADM_H
 #define _LIBIPADM_H
 
 #ifdef  __cplusplus
 extern "C" {
 #endif
 
 #include <sys/types.h>
+#include <sys/param.h>
 #include <sys/socket.h>
 #include <net/if.h>
 #include <netdb.h>
 #include <ifaddrs.h>
 #include <libnvpair.h>

@@ -99,11 +101,11 @@
  * option flags taken by the libipadm functions
  *
  *  - IPADM_OPT_PERSIST:
  *      For all the create/delete/up/down/set/get functions,
  *      requests to persist the configuration so that it can be
- *      re-enabled or reapplied on boot.
+ *      re-enabled or re-applied on boot.
  *
  *  - IPADM_OPT_ACTIVE:
  *      Requests to apply configuration without persisting it and
  *      used by show-* subcommands to retrieve current values.
  *

@@ -140,10 +142,20 @@
  *  - IPADM_OPT_UP
  *      Used to bring up a static address on creation
  *
  *  - IPADM_OPT_V46
  *      Used to plumb both IPv4 and IPv6 interfaces by ipadm_create_addr()
+ *
+ *  - IPADM_OPT_SET_PROPS
+ *      Used to indicate the update changes the running configuration of
+ *      "props" data on the object. The props are cached there on the parent,
+ *      but the PROPS_ONLY change does not affect the ACTIVE/PERSIST state of
+ *      the parent.
+ *
+ *  - IPADM_OPT_PERSIST_PROPS
+ *      Used when IPADM_OPT_SET_PROPS is active to indicate the update changes
+ *  the persistent configuration of the "props" data on the object.
  */
 #define IPADM_OPT_PERSIST       0x00000001
 #define IPADM_OPT_ACTIVE        0x00000002
 #define IPADM_OPT_DEFAULT       0x00000004
 #define IPADM_OPT_PERM          0x00000008

@@ -155,10 +167,12 @@
 #define IPADM_OPT_ZEROADDR      0x00000200
 #define IPADM_OPT_RELEASE       0x00000400
 #define IPADM_OPT_INFORM        0x00000800
 #define IPADM_OPT_UP            0x00001000
 #define IPADM_OPT_V46           0x00002000
+#define IPADM_OPT_SET_PROPS     0x00004000
+#define IPADM_OPT_PERSIST_PROPS         0x00008000
 
 /* IPADM property class */
 #define IPADMPROP_CLASS_MODULE  0x00000001      /* on 'protocol' only */
 #define IPADMPROP_CLASS_IF      0x00000002      /* on 'IP interface' only */
 #define IPADMPROP_CLASS_ADDR    0x00000004      /* on 'IP address' only */

@@ -255,11 +269,11 @@
 extern void             ipadm_close(ipadm_handle_t);
 
 /* Check authorization for network configuration */
 extern boolean_t        ipadm_check_auth(void);
 /*
- * Interface mangement functions
+ * Interface management functions
  */
 extern ipadm_status_t   ipadm_create_if(ipadm_handle_t, char *, sa_family_t,
                             uint32_t);
 extern ipadm_status_t   ipadm_disable_if(ipadm_handle_t, const char *,
                             uint32_t);

@@ -313,10 +327,11 @@
 extern ipadm_status_t   ipadm_set_stateful(ipadm_addrobj_t, boolean_t);
 
 /* Functions to set fields in addrobj for DHCP */
 extern ipadm_status_t   ipadm_set_primary(ipadm_addrobj_t, boolean_t);
 extern ipadm_status_t   ipadm_set_wait_time(ipadm_addrobj_t, int32_t);
+extern ipadm_status_t   ipadm_set_reqhost(ipadm_addrobj_t, const char *);
 
 /*
  * Property management functions
  */
 /* call back function for the property walker */

@@ -355,10 +370,12 @@
 extern ipadm_status_t   ipadm_open_arp_on_udp(const char *, int *);
 extern int              ipadm_legacy2new_propname(const char *, char *,
                             uint_t, uint_t *);
 extern int              ipadm_new2legacy_propname(const char *, char *,
                             uint_t, uint_t);
+extern boolean_t        ipadm_is_valid_hostname(const char *hostname);
+extern boolean_t        ipadm_is_nil_hostname(const char *hostname);
 
 #ifdef  __cplusplus
 }
 #endif