Print this page
7388 Support DHCP Client FQDN. Allow IAID/DUID for all v4.
*** 19,28 ****
--- 19,29 ----
* 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,112 ****
* - 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
*/
typedef struct ipmgmt_aobjmap_s {
struct ipmgmt_aobjmap_s *am_next;
char am_aobjname[IPADM_AOBJSIZ];
char am_ifname[LIFNAMSIZ];
--- 102,117 ----
* - 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
! * - 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,126 ****
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_aobjmap_t;
/* 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;
--- 118,135 ----
int32_t am_lnum;
sa_family_t am_family;
ipadm_addr_type_t am_atype;
uint32_t am_nextnum;
uint32_t am_flags;
! 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;