1*5331Samw /* 2*5331Samw * CDDL HEADER START 3*5331Samw * 4*5331Samw * The contents of this file are subject to the terms of the 5*5331Samw * Common Development and Distribution License (the "License"). 6*5331Samw * You may not use this file except in compliance with the License. 7*5331Samw * 8*5331Samw * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*5331Samw * or http://www.opensolaris.org/os/licensing. 10*5331Samw * See the License for the specific language governing permissions 11*5331Samw * and limitations under the License. 12*5331Samw * 13*5331Samw * When distributing Covered Code, include this CDDL HEADER in each 14*5331Samw * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*5331Samw * If applicable, add the following below this CDDL HEADER, with the 16*5331Samw * fields enclosed by brackets "[]" replaced with your own identifying 17*5331Samw * information: Portions Copyright [yyyy] [name of copyright owner] 18*5331Samw * 19*5331Samw * CDDL HEADER END 20*5331Samw */ 21*5331Samw /* 22*5331Samw * Copyright 2007 Sun Microsystems, Inc. All rights reserved. 23*5331Samw * Use is subject to license terms. 24*5331Samw */ 25*5331Samw 26*5331Samw #ifndef _LIBSMBNS_H 27*5331Samw #define _LIBSMBNS_H 28*5331Samw 29*5331Samw #pragma ident "%Z%%M% %I% %E% SMI" 30*5331Samw 31*5331Samw #include <ldap.h> 32*5331Samw #include <net/if.h> 33*5331Samw 34*5331Samw #include <smbsrv/libsmb.h> 35*5331Samw 36*5331Samw #ifdef __cplusplus 37*5331Samw extern "C" { 38*5331Samw #endif 39*5331Samw 40*5331Samw /* ADS typedef/data structures and functions */ 41*5331Samw #define ADS_MAXBUFLEN 100 42*5331Samw 43*5331Samw typedef struct ads_handle_s { 44*5331Samw char *user; /* admin user to create share in ADS */ 45*5331Samw char *pwd; /* user password */ 46*5331Samw char *container; /* user container in ADS */ 47*5331Samw char *domain; /* ADS domain */ 48*5331Samw char *domain_dn; /* domain in Distinquish Name format */ 49*5331Samw char *ip_addr; /* ip addr in string format */ 50*5331Samw char *hostname; /* fully qualified hostname */ 51*5331Samw char *site; /* local ADS site */ 52*5331Samw LDAP *ld; /* LDAP handle */ 53*5331Samw } ADS_HANDLE; 54*5331Samw 55*5331Samw /* 56*5331Samw * The possible return status of the adjoin routine. 57*5331Samw */ 58*5331Samw typedef enum adjoin_status { 59*5331Samw ADJOIN_SUCCESS = 0, 60*5331Samw ADJOIN_ERR_GET_HANDLE, 61*5331Samw ADJOIN_ERR_GEN_PASSWD, 62*5331Samw ADJOIN_ERR_ADD_TRUST_ACCT, 63*5331Samw ADJOIN_ERR_GET_ENCTYPES, 64*5331Samw ADJOIN_ERR_GET_HOST_PRINC, 65*5331Samw ADJOIN_ERR_INIT_KRB_CTX, 66*5331Samw ADJOIN_ERR_GET_KRB_PRINC, 67*5331Samw ADJOIN_ERR_KSETPWD, 68*5331Samw ADJOIN_ERR_MOD_TRUST_ACCT, 69*5331Samw ADJOIN_ERR_WRITE_KEYTAB, 70*5331Samw ADJOIN_ERR_IDMAP_SET_DOMAIN, 71*5331Samw ADJOIN_ERR_IDMAP_SET_GC, 72*5331Samw ADJOIN_ERR_IDMAP_REFRESH, 73*5331Samw ADJOIN_ERR_IDMAP_CCACHE, 74*5331Samw 75*5331Samw ADJOIN_NUM_STATUS 76*5331Samw } adjoin_status_t; 77*5331Samw 78*5331Samw /* ADS functions */ 79*5331Samw extern ADS_HANDLE *ads_open(void); 80*5331Samw extern void ads_close(ADS_HANDLE *); 81*5331Samw extern int ads_publish_share(ADS_HANDLE *, const char *, const char *, 82*5331Samw const char *, const char *); 83*5331Samw extern int ads_remove_share(ADS_HANDLE *, const char *, const char *, 84*5331Samw const char *, const char *); 85*5331Samw extern int ads_build_unc_name(char *, int, const char *, const char *); 86*5331Samw extern int ads_lookup_share(ADS_HANDLE *, const char *, const char *, char *); 87*5331Samw extern int ads_add_share(ADS_HANDLE *, const char *, const char *, 88*5331Samw const char *); 89*5331Samw 90*5331Samw extern adjoin_status_t adjoin(char *, int); 91*5331Samw extern char *adjoin_report_err(adjoin_status_t status); 92*5331Samw 93*5331Samw /* DYNDNS functions */ 94*5331Samw extern int dyndns_update(void); 95*5331Samw extern int dyndns_clear_rev_zone(void); 96*5331Samw 97*5331Samw /* Kerberos initialization function */ 98*5331Samw extern int smb_kinit(char *user, char *passwd); 99*5331Samw 100*5331Samw 101*5331Samw /* NETBIOS Functions */ 102*5331Samw extern int msdcs_lookup_ads(void); 103*5331Samw extern void smb_netbios_start(void); 104*5331Samw extern void smb_netbios_shutdown(void); 105*5331Samw extern void smb_netbios_name_reconfig(void); 106*5331Samw 107*5331Samw /* Browser Configure */ 108*5331Samw extern void smb_browser_config(void); 109*5331Samw 110*5331Samw extern void smb_netlogon_request(int, int, char *); 111*5331Samw 112*5331Samw /* 113*5331Samw * NIC listing and config 114*5331Samw */ 115*5331Samw #define MAXIFS 256 116*5331Samw #define SIZE_IP 17 117*5331Samw 118*5331Samw typedef struct { 119*5331Samw char ifname[LIFNAMSIZ]; 120*5331Samw uint32_t ip; 121*5331Samw uint32_t mask; 122*5331Samw uint32_t broadcast; 123*5331Samw boolean_t exclude; 124*5331Samw uint64_t flags; 125*5331Samw char groupname[LIFGRNAMSIZ]; 126*5331Samw char **aliases; 127*5331Samw int naliases; 128*5331Samw } net_cfg_t; 129*5331Samw typedef struct { 130*5331Samw net_cfg_t *net_cfg_list; 131*5331Samw int net_cfg_cnt; 132*5331Samw } net_cfg_list_t; 133*5331Samw 134*5331Samw struct if_list { 135*5331Samw char name[IFNAMSIZ+1]; 136*5331Samw struct if_list *next; 137*5331Samw }; 138*5331Samw 139*5331Samw struct ip_alias { 140*5331Samw char name[SIZE_IP]; 141*5331Samw struct ip_alias *next; 142*5331Samw }; 143*5331Samw 144*5331Samw #define GATEWAY_FILE "/etc/defaultrouter" 145*5331Samw 146*5331Samw /* NIC Config functions */ 147*5331Samw extern void smb_resolver_init(void); 148*5331Samw extern void smb_resolver_close(void); 149*5331Samw extern int smb_get_nameservers(struct in_addr *, int); 150*5331Samw extern uint16_t smb_get_next_resid(void); 151*5331Samw extern void smb_nic_lock(void); 152*5331Samw extern void smb_nic_unlock(void); 153*5331Samw extern int smb_nic_init(void); 154*5331Samw extern void smb_nic_build_info(void); 155*5331Samw extern net_cfg_t *smb_nic_get_byind(int, net_cfg_t *); 156*5331Samw extern net_cfg_t *smb_nic_get_bysubnet(uint32_t, net_cfg_t *); 157*5331Samw extern net_cfg_t *smb_nic_get_byip(uint32_t, net_cfg_t *); 158*5331Samw extern int smb_nic_get_num(void); 159*5331Samw extern int smb_nic_get_IP(char *, uint32_t *uip); 160*5331Samw extern int smb_nic_get_broadcast(char *, uint32_t *uip); 161*5331Samw extern int smb_nic_get_netmask(char *, uint32_t *uip); 162*5331Samw extern int smb_nic_get_IP_aliases(char *, struct ip_alias **); 163*5331Samw extern int smb_nic_get_number(void); 164*5331Samw extern int smb_nic_get_num_physical(void); 165*5331Samw extern int smb_nic_get_num_logical(void); 166*5331Samw extern int smb_nic_get_num_aliases(char *); 167*5331Samw extern int smb_nic_get_default_gateway(char *, unsigned int); 168*5331Samw extern int smb_nic_flags(char *, uint64_t *); 169*5331Samw extern int smb_nic_build_if_name(char ***); 170*5331Samw extern int smb_nic_build_network_structures(net_cfg_t **, int *); 171*5331Samw extern char *smb_nic_get_ifnames(int, int); 172*5331Samw extern int smb_nic_validate_ip_address(char *); 173*5331Samw extern int smb_nic_status(char *, uint64_t); 174*5331Samw extern int smb_nic_get_group(char *lifname, char *grname); 175*5331Samw extern int smb_nic_set_group(char *lifname, char *grname); 176*5331Samw extern int smb_nic_clear_niclist(net_cfg_t *, int); 177*5331Samw extern int smb_nic_clear_name_list(char **, int); 178*5331Samw extern int smb_nic_clear_ip_alias(struct ip_alias *); 179*5331Samw 180*5331Samw #ifdef __cplusplus 181*5331Samw } 182*5331Samw #endif 183*5331Samw 184*5331Samw #endif /* _LIBSMBNS_H */ 185