Print this page
OS-161: Integrate IPMP changes

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 2013 Nexenta Systems, Inc. All rights reserved.
  23   24   * Copyright (c) 2016, Chris Fraire <cfraire@me.com>.
  24   25   */
  25   26  #ifndef _LIBIPADM_H
  26   27  #define _LIBIPADM_H
  27   28  
  28   29  #ifdef  __cplusplus
  29   30  extern "C" {
  30   31  #endif
  31   32  
  32   33  #include <sys/types.h>
  33   34  #include <sys/param.h>
  34   35  #include <sys/socket.h>
  35   36  #include <net/if.h>
  36   37  #include <netdb.h>
  37   38  #include <ifaddrs.h>
  38   39  #include <libnvpair.h>
  39   40  #include <netinet/tcp.h>
  40   41  #include <sys/stropts.h>
       42 +#include <sys/list.h>
       43 +#include <stddef.h>
  41   44  
  42   45  #define IPADM_AOBJ_USTRSIZ      32
  43   46  #define IPADM_AOBJSIZ           (LIFNAMSIZ + IPADM_AOBJ_USTRSIZ)
  44   47  #define MAXPROPVALLEN           512
  45   48  #define LOOPBACK_IF             "lo0"
  46   49  
  47   50  /* special timeout values for dhcp operations */
  48   51  #define IPADM_DHCP_WAIT_DEFAULT (-1)
  49   52  #define IPADM_DHCP_WAIT_FOREVER (-2)
  50   53  
↓ open down ↓ 147 lines elided ↑ open up ↑
 198  201  
 199  202  /* ipadm_if_info_t states */
 200  203  typedef enum {
 201  204          IFIS_OK,                /* Interface is usable */
 202  205          IFIS_DOWN,              /* Interface has no UP addresses */
 203  206          IFIS_FAILED,            /* Interface has failed. */
 204  207          IFIS_OFFLINE,           /* Interface has been offlined */
 205  208          IFIS_DISABLED           /* Interface has been disabled. */
 206  209  } ipadm_if_state_t;
 207  210  
      211 +typedef list_t ipadm_ipmp_members_t;
      212 +
      213 +typedef struct {
      214 +    list_node_t node;
      215 +    char if_name[LIFNAMSIZ];
      216 +} ipadm_ipmp_member_t;
      217 +
      218 +typedef enum {
      219 +    IPADM_IF_CLASS_REGULAR,
      220 +    IPADM_IF_CLASS_IPMP,
      221 +    IPADM_IF_CLASS_VIRTUAL,
      222 +    IPADM_IF_CLASS_UNKNOWN
      223 +} ipadm_if_class_t;
      224 +
 208  225  typedef struct ipadm_if_info_s {
 209  226          struct ipadm_if_info_s  *ifi_next;
 210  227          char                    ifi_name[LIFNAMSIZ];    /* interface name */
      228 +        ipadm_if_class_t        ifi_class;              /* interface class */
 211  229          ipadm_if_state_t        ifi_state;              /* see above */
 212  230          uint_t                  ifi_cflags;             /* current flags */
 213  231          uint_t                  ifi_pflags;             /* persistent flags */
      232 +        ipadm_ipmp_members_t    ifi_ipmp_cmembers; /* current IPMP members */
      233 +        ipadm_ipmp_members_t    ifi_ipmp_pmembers; /* persistent IPMP members */
 214  234  } ipadm_if_info_t;
 215  235  
 216  236  /* ipadm_if_info_t flags */
 217  237  #define IFIF_BROADCAST          0x00000001
 218  238  #define IFIF_MULTICAST          0x00000002
 219  239  #define IFIF_POINTOPOINT        0x00000004
 220  240  #define IFIF_VIRTUAL            0x00000008
 221  241  #define IFIF_IPMP               0x00000010
 222  242  #define IFIF_STANDBY            0x00000020
 223  243  #define IFIF_INACTIVE           0x00000040
↓ open down ↓ 53 lines elided ↑ open up ↑
 277  297                              uint32_t);
 278  298  extern ipadm_status_t   ipadm_disable_if(ipadm_handle_t, const char *,
 279  299                              uint32_t);
 280  300  extern ipadm_status_t   ipadm_enable_if(ipadm_handle_t, const char *, uint32_t);
 281  301  extern ipadm_status_t   ipadm_if_info(ipadm_handle_t, const char *,
 282  302                              ipadm_if_info_t **, uint32_t, int64_t);
 283  303  extern void             ipadm_free_if_info(ipadm_if_info_t *);
 284  304  extern ipadm_status_t   ipadm_delete_if(ipadm_handle_t, const char *,
 285  305                              sa_family_t, uint32_t);
 286  306  extern void             ipadm_if_move(ipadm_handle_t, const char *);
      307 +extern ipadm_status_t ipadm_add_ipmp_member(ipadm_handle_t, const char *,
      308 +            const char *, uint32_t);
      309 +extern ipadm_status_t ipadm_remove_ipmp_member(ipadm_handle_t, const char *,
      310 +            const char *, uint32_t);
 287  311  
 288  312  /*
 289  313   * Address management functions
 290  314   */
 291  315  extern ipadm_status_t   ipadm_create_addr(ipadm_handle_t, ipadm_addrobj_t,
 292  316                              uint32_t);
 293  317  extern ipadm_status_t   ipadm_disable_addr(ipadm_handle_t, const char *,
 294  318                              uint32_t);
 295  319  extern ipadm_status_t   ipadm_enable_addr(ipadm_handle_t, const char *,
 296  320                              uint32_t);
↓ open down ↓ 86 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX