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

Split Close
Expand all
Collapse all
          --- old/usr/src/lib/libipadm/common/libipadm.h
          +++ new/usr/src/lib/libipadm/common/libipadm.h
↓ open down ↓ 12 lines elided ↑ open up ↑
  13   13   * When distributing Covered Code, include this CDDL HEADER in each
  14   14   * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15   15   * If applicable, add the following below this CDDL HEADER, with the
  16   16   * fields enclosed by brackets "[]" replaced with your own identifying
  17   17   * information: Portions Copyright [yyyy] [name of copyright owner]
  18   18   *
  19   19   * CDDL HEADER END
  20   20   */
  21   21  /*
  22   22   * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
       23 + * Copyright (c) 2016, Chris Fraire <cfraire@me.com>.
  23   24   */
  24   25  #ifndef _LIBIPADM_H
  25   26  #define _LIBIPADM_H
  26   27  
  27   28  #ifdef  __cplusplus
  28   29  extern "C" {
  29   30  #endif
  30   31  
  31   32  #include <sys/types.h>
       33 +#include <sys/param.h>
  32   34  #include <sys/socket.h>
  33   35  #include <net/if.h>
  34   36  #include <netdb.h>
  35   37  #include <ifaddrs.h>
  36   38  #include <libnvpair.h>
  37   39  #include <netinet/tcp.h>
  38   40  #include <sys/stropts.h>
  39   41  
  40   42  #define IPADM_AOBJ_USTRSIZ      32
  41   43  #define IPADM_AOBJSIZ           (LIFNAMSIZ + IPADM_AOBJ_USTRSIZ)
↓ open down ↓ 52 lines elided ↑ open up ↑
  94   96          IPADM_EBADE,            /* Invalid data exchange with ipmgmtd */
  95   97          IPADM_GZ_PERM           /* Operation not permitted on from-gz intf */
  96   98  } ipadm_status_t;
  97   99  
  98  100  /*
  99  101   * option flags taken by the libipadm functions
 100  102   *
 101  103   *  - IPADM_OPT_PERSIST:
 102  104   *      For all the create/delete/up/down/set/get functions,
 103  105   *      requests to persist the configuration so that it can be
 104      - *      re-enabled or reapplied on boot.
      106 + *      re-enabled or re-applied on boot.
 105  107   *
 106  108   *  - IPADM_OPT_ACTIVE:
 107  109   *      Requests to apply configuration without persisting it and
 108  110   *      used by show-* subcommands to retrieve current values.
 109  111   *
 110  112   *  - IPADM_OPT_DEFAULT:
 111  113   *      retrieves the default value for a given property
 112  114   *
 113  115   *  - IPADM_OPT_PERM
 114  116   *      retrieves the permission for a given property
↓ open down ↓ 19 lines elided ↑ open up ↑
 134  136   *  - IPADM_OPT_RELEASE
 135  137   *      Used to release the lease on a dhcp address object
 136  138   *
 137  139   *  - IPADM_OPT_INFORM
 138  140   *      Used to perform DHCP_INFORM on a specified static address object
 139  141   *
 140  142   *  - IPADM_OPT_UP
 141  143   *      Used to bring up a static address on creation
 142  144   *
 143  145   *  - IPADM_OPT_V46
 144      - *      Used to plumb both IPv4 and IPv6 interfaces by ipadm_create_addr()
      146 + *      Used to plumb both IPv4 and IPv6 interfaces by ipadm_create_addr()
      147 + *
      148 + *  - IPADM_OPT_SET_PROPS
      149 + *      Used to indicate the update changes the running configuration of
      150 + *      "props" data on the object. The props are cached there on the parent,
      151 + *      but the PROPS_ONLY change does not affect the ACTIVE/PERSIST state of
      152 + *      the parent.
      153 + *
      154 + *  - IPADM_OPT_PERSIST_PROPS
      155 + *      Used when IPADM_OPT_SET_PROPS is active to indicate the update changes
      156 + *  the persistent configuration of the "props" data on the object.
 145  157   */
 146  158  #define IPADM_OPT_PERSIST       0x00000001
 147  159  #define IPADM_OPT_ACTIVE        0x00000002
 148  160  #define IPADM_OPT_DEFAULT       0x00000004
 149  161  #define IPADM_OPT_PERM          0x00000008
 150  162  #define IPADM_OPT_POSSIBLE      0x00000010
 151  163  #define IPADM_OPT_APPEND        0x00000020
 152  164  #define IPADM_OPT_REMOVE        0x00000040
 153  165  #define IPADM_OPT_IPMP          0x00000080
 154  166  #define IPADM_OPT_GENPPA        0x00000100
 155  167  #define IPADM_OPT_ZEROADDR      0x00000200
 156  168  #define IPADM_OPT_RELEASE       0x00000400
 157  169  #define IPADM_OPT_INFORM        0x00000800
 158  170  #define IPADM_OPT_UP            0x00001000
 159  171  #define IPADM_OPT_V46           0x00002000
      172 +#define IPADM_OPT_SET_PROPS     0x00004000
      173 +#define IPADM_OPT_PERSIST_PROPS         0x00008000
 160  174  
 161  175  /* IPADM property class */
 162  176  #define IPADMPROP_CLASS_MODULE  0x00000001      /* on 'protocol' only */
 163  177  #define IPADMPROP_CLASS_IF      0x00000002      /* on 'IP interface' only */
 164  178  #define IPADMPROP_CLASS_ADDR    0x00000004      /* on 'IP address' only */
 165  179  /* protocol property that can be applied on interface too */
 166  180  #define IPADMPROP_CLASS_MODIF   (IPADMPROP_CLASS_MODULE | IPADMPROP_CLASS_IF)
 167  181  
 168  182  /* opaque ipadm handle to libipadm functions */
 169  183  struct ipadm_handle;
↓ open down ↓ 80 lines elided ↑ open up ↑
 250  264  #define IA_TEMPORARY            0x00000008
 251  265  #define IA_DEPRECATED           0x00000010
 252  266  
 253  267  /* open/close libipadm handle */
 254  268  extern ipadm_status_t   ipadm_open(ipadm_handle_t *, uint32_t);
 255  269  extern void             ipadm_close(ipadm_handle_t);
 256  270  
 257  271  /* Check authorization for network configuration */
 258  272  extern boolean_t        ipadm_check_auth(void);
 259  273  /*
 260      - * Interface mangement functions
      274 + * Interface management functions
 261  275   */
 262  276  extern ipadm_status_t   ipadm_create_if(ipadm_handle_t, char *, sa_family_t,
 263  277                              uint32_t);
 264  278  extern ipadm_status_t   ipadm_disable_if(ipadm_handle_t, const char *,
 265  279                              uint32_t);
 266  280  extern ipadm_status_t   ipadm_enable_if(ipadm_handle_t, const char *, uint32_t);
 267  281  extern ipadm_status_t   ipadm_if_info(ipadm_handle_t, const char *,
 268  282                              ipadm_if_info_t **, uint32_t, int64_t);
 269  283  extern void             ipadm_free_if_info(ipadm_if_info_t *);
 270  284  extern ipadm_status_t   ipadm_delete_if(ipadm_handle_t, const char *,
↓ open down ↓ 37 lines elided ↑ open up ↑
 308  322                              struct sockaddr_storage *);
 309  323  
 310  324  /* Functions to set fields in addrobj for IPv6 addrconf */
 311  325  extern ipadm_status_t   ipadm_set_interface_id(ipadm_addrobj_t, const char *);
 312  326  extern ipadm_status_t   ipadm_set_stateless(ipadm_addrobj_t, boolean_t);
 313  327  extern ipadm_status_t   ipadm_set_stateful(ipadm_addrobj_t, boolean_t);
 314  328  
 315  329  /* Functions to set fields in addrobj for DHCP */
 316  330  extern ipadm_status_t   ipadm_set_primary(ipadm_addrobj_t, boolean_t);
 317  331  extern ipadm_status_t   ipadm_set_wait_time(ipadm_addrobj_t, int32_t);
      332 +extern ipadm_status_t   ipadm_set_reqhost(ipadm_addrobj_t, const char *);
 318  333  
 319  334  /*
 320  335   * Property management functions
 321  336   */
 322  337  /* call back function for the property walker */
 323  338  typedef boolean_t       ipadm_prop_wfunc_t(void *, const char *, uint_t);
 324  339  extern ipadm_status_t   ipadm_walk_proptbl(uint_t, uint_t, ipadm_prop_wfunc_t *,
 325  340                              void *);
 326  341  extern ipadm_status_t   ipadm_walk_prop(const char *, uint_t, uint_t,
 327  342                              ipadm_prop_wfunc_t *, void *);
↓ open down ↓ 22 lines elided ↑ open up ↑
 350  365  extern const char       *ipadm_status2str(ipadm_status_t);
 351  366  extern int              ipadm_str2nvlist(const char *, nvlist_t **, uint_t);
 352  367  extern size_t           ipadm_nvlist2str(nvlist_t *, char *, size_t);
 353  368  extern char             *ipadm_proto2str(uint_t);
 354  369  extern uint_t           ipadm_str2proto(const char *);
 355  370  extern ipadm_status_t   ipadm_open_arp_on_udp(const char *, int *);
 356  371  extern int              ipadm_legacy2new_propname(const char *, char *,
 357  372                              uint_t, uint_t *);
 358  373  extern int              ipadm_new2legacy_propname(const char *, char *,
 359  374                              uint_t, uint_t);
      375 +extern boolean_t        ipadm_is_valid_hostname(const char *hostname);
      376 +extern boolean_t        ipadm_is_nil_hostname(const char *hostname);
 360  377  
 361  378  #ifdef  __cplusplus
 362  379  }
 363  380  #endif
 364  381  
 365  382  #endif  /* _LIBIPADM_H */
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX