Print this page
7388 Support DHCP Client FQDN. Allow IAID/DUID for all v4.
@@ -19,10 +19,11 @@
* CDDL HEADER END
*/
/*
* Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, Chris Fraire <cfraire@me.com>.
*/
#ifndef _IPMGMT_IMPL_H
#define _IPMGMT_IMPL_H
@@ -101,12 +102,16 @@
* - address family
* - `am_nextnum' identifies the next number to use to generate user part
* of `aobjname'.
* - address type (static, dhcp or addrconf)
* - `am_flags' indicates if this addrobj in active and/or persist config
- * - if `am_atype' is IPADM_ADDR_IPV6_ADDRCONF then `am_ifid' holds the
- * interface-id used to configure auto-configured addresses
+ * - other, ipadm_addr_type_t-specific values are cached in
+ * am_addr_cache (see type ipmgmt_addr_cache_u):
+ * - ipv6: ipmgmt_am_linklocal (macro)
+ * - ipv6: ipmgmt_am_ifid (macro)
+ * - dhcp: ipmgmt_am_primary (macro)
+ * - dhcp: ipmgmt_am_reqhost (macro)
*/
typedef struct ipmgmt_aobjmap_s {
struct ipmgmt_aobjmap_s *am_next;
char am_aobjname[IPADM_AOBJSIZ];
char am_ifname[LIFNAMSIZ];
@@ -113,14 +118,18 @@
int32_t am_lnum;
sa_family_t am_family;
ipadm_addr_type_t am_atype;
uint32_t am_nextnum;
uint32_t am_flags;
- boolean_t am_linklocal;
- struct sockaddr_storage am_ifid;
+ ipmgmt_addr_type_cache_u am_atype_cache;
} ipmgmt_aobjmap_t;
+#define ipmgmt_am_linklocal am_atype_cache.ipmgmt_ipv6_cache_s.ipmgmt_linklocal
+#define ipmgmt_am_ifid am_atype_cache.ipmgmt_ipv6_cache_s.ipmgmt_ifid
+#define ipmgmt_am_primary am_atype_cache.ipmgmt_dhcp_cache_s.ipmgmt_primary
+#define ipmgmt_am_reqhost am_atype_cache.ipmgmt_dhcp_cache_s.ipmgmt_reqhost
+
/* linked list of `aobjmap' nodes, protected by RW lock */
typedef struct ipmgmt_aobjmap_list_s {
ipmgmt_aobjmap_t *aobjmap_head;
pthread_rwlock_t aobjmap_rwlock;
} ipmgmt_aobjmap_list_t;