Print this page
Commit IPMP changes

@@ -19,10 +19,11 @@
  * CDDL HEADER END
  */
 /*
  * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright (c) 2013 by Delphix. All rights reserved.
+ * Copyright (c) 2014 Nexenta Systems, Inc. All rights reserved.
  */
 
 #ifndef _LIBIPADM_IMPL_H
 #define _LIBIPADM_IMPL_H
 

@@ -29,10 +30,11 @@
 #ifdef  __cplusplus
 extern "C" {
 #endif
 
 #include <sys/socket.h>
+#include <sys/list.h>
 #include <net/if.h>
 #include <libipadm.h>
 #include <libdladm.h>
 #include <ipadm_ipmgmt.h>
 #include <inet/tunables.h>

@@ -49,10 +51,15 @@
 #define IPV6_MIN_MTU            1280    /* rfc2460 */
 
 /* mask for flags accepted by libipadm functions */
 #define IPADM_COMMON_OPT_MASK   (IPADM_OPT_ACTIVE | IPADM_OPT_PERSIST)
 
+typedef enum {
+    IPADM_ADD_IPMP_MEMBER,
+    IPADM_REMOVE_IPMP_MEMBER
+} ipadm_ipmp_operation_t;
+
 /* Opaque library handle */
 struct ipadm_handle {
         int             iph_sock;       /* socket to interface */
         int             iph_sock6;      /* socket to interface */
         int             iph_door_fd;    /* door descriptor to ipmgmtd */

@@ -148,19 +155,19 @@
                             const ipadm_addrobj_t, boolean_t, uint32_t);
 extern ipadm_status_t   i_ipadm_delete_addr(ipadm_handle_t, ipadm_addrobj_t);
 extern int              i_ipadm_strioctl(int, int, char *, int);
 extern boolean_t        i_ipadm_is_loopback(const char *);
 extern boolean_t        i_ipadm_is_vni(const char *);
-extern boolean_t        i_ipadm_is_ipmp(ipadm_handle_t, const char *);
-extern boolean_t        i_ipadm_is_under_ipmp(ipadm_handle_t, const char *);
 extern boolean_t        i_ipadm_is_6to4(ipadm_handle_t, char *);
 extern boolean_t        i_ipadm_validate_ifname(ipadm_handle_t, const char *);
 extern ipadm_status_t   ipadm_errno2status(int);
 extern int              ipadm_door_call(ipadm_handle_t, void *, size_t, void **,
                             size_t, boolean_t);
 extern boolean_t        ipadm_if_enabled(ipadm_handle_t, const char *,
                             sa_family_t);
+extern ipadm_status_t i_ipadm_call_ipmgmtd(ipadm_handle_t, void *,
+            size_t, nvlist_t **);
 
 /* ipadm_ndpd.c */
 extern  ipadm_status_t  i_ipadm_create_ipv6addrs(ipadm_handle_t,
                             ipadm_addrobj_t, uint32_t);
 extern ipadm_status_t   i_ipadm_delete_ipv6addrs(ipadm_handle_t,

@@ -224,10 +231,16 @@
                             sa_family_t, boolean_t *);
 extern ipadm_status_t   i_ipadm_delete_ifobj(ipadm_handle_t, const char *,
                             sa_family_t, boolean_t);
 extern int              i_ipadm_get_lnum(const char *);
 
+extern ipadm_status_t i_ipadm_set_groupname_active(ipadm_handle_t,
+            const char *, const char *);
+extern ipadm_status_t i_ipadm_get_groupname_active(ipadm_handle_t,
+            const char *, char *, size_t);
+extern boolean_t i_ipadm_is_under_ipmp(ipadm_handle_t, const char *);
+extern boolean_t i_ipadm_is_ipmp(ipadm_handle_t, const char *);
 #ifdef  __cplusplus
 }
 #endif
 
 #endif  /* _LIBIPADM_IMPL_H */