15331Samw /* 25331Samw * CDDL HEADER START 35331Samw * 45331Samw * The contents of this file are subject to the terms of the 55331Samw * Common Development and Distribution License (the "License"). 65331Samw * You may not use this file except in compliance with the License. 75331Samw * 85331Samw * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 95331Samw * or http://www.opensolaris.org/os/licensing. 105331Samw * See the License for the specific language governing permissions 115331Samw * and limitations under the License. 125331Samw * 135331Samw * When distributing Covered Code, include this CDDL HEADER in each 145331Samw * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 155331Samw * If applicable, add the following below this CDDL HEADER, with the 165331Samw * fields enclosed by brackets "[]" replaced with your own identifying 175331Samw * information: Portions Copyright [yyyy] [name of copyright owner] 185331Samw * 195331Samw * CDDL HEADER END 205331Samw */ 215331Samw /* 22*5772Sas200622 * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 235331Samw * Use is subject to license terms. 245331Samw */ 255331Samw 265331Samw #ifndef _LIBSMBNS_H 275331Samw #define _LIBSMBNS_H 285331Samw 295331Samw #pragma ident "%Z%%M% %I% %E% SMI" 305331Samw 315331Samw #include <ldap.h> 325331Samw #include <net/if.h> 335331Samw 345331Samw #include <smbsrv/libsmb.h> 355331Samw 365331Samw #ifdef __cplusplus 375331Samw extern "C" { 385331Samw #endif 395331Samw 405331Samw /* ADS typedef/data structures and functions */ 415331Samw #define ADS_MAXBUFLEN 100 425331Samw 435331Samw typedef struct ads_handle_s { 445331Samw char *user; /* admin user to create share in ADS */ 455331Samw char *pwd; /* user password */ 465331Samw char *domain; /* ADS domain */ 475331Samw char *domain_dn; /* domain in Distinquish Name format */ 485331Samw char *ip_addr; /* ip addr in string format */ 495331Samw char *hostname; /* fully qualified hostname */ 505331Samw char *site; /* local ADS site */ 515331Samw LDAP *ld; /* LDAP handle */ 525331Samw } ADS_HANDLE; 535331Samw 545331Samw /* 555331Samw * The possible return status of the adjoin routine. 565331Samw */ 575331Samw typedef enum adjoin_status { 585331Samw ADJOIN_SUCCESS = 0, 595331Samw ADJOIN_ERR_GET_HANDLE, 605331Samw ADJOIN_ERR_GEN_PASSWD, 615331Samw ADJOIN_ERR_ADD_TRUST_ACCT, 625521Sas200622 ADJOIN_ERR_MOD_TRUST_ACCT, 635331Samw ADJOIN_ERR_GET_ENCTYPES, 645331Samw ADJOIN_ERR_GET_HOST_PRINC, 655331Samw ADJOIN_ERR_INIT_KRB_CTX, 665331Samw ADJOIN_ERR_GET_KRB_PRINC, 675331Samw ADJOIN_ERR_KSETPWD, 685521Sas200622 ADJOIN_ERR_UPDATE_CNTRL_ATTR, 695331Samw ADJOIN_ERR_WRITE_KEYTAB, 705331Samw ADJOIN_ERR_IDMAP_SET_DOMAIN, 715331Samw ADJOIN_ERR_IDMAP_REFRESH, 725521Sas200622 ADJOIN_ERR_SMB_REFRESH, 735331Samw ADJOIN_NUM_STATUS 745331Samw } adjoin_status_t; 755331Samw 765331Samw /* ADS functions */ 77*5772Sas200622 extern void ads_init(void); 78*5772Sas200622 extern void ads_refresh(void); 795331Samw extern ADS_HANDLE *ads_open(void); 805331Samw extern void ads_close(ADS_HANDLE *); 815331Samw extern int ads_publish_share(ADS_HANDLE *, const char *, const char *, 825331Samw const char *, const char *); 835331Samw extern int ads_remove_share(ADS_HANDLE *, const char *, const char *, 845331Samw const char *, const char *); 855331Samw extern int ads_build_unc_name(char *, int, const char *, const char *); 865331Samw extern int ads_lookup_share(ADS_HANDLE *, const char *, const char *, char *); 875331Samw extern int ads_add_share(ADS_HANDLE *, const char *, const char *, 885331Samw const char *); 89*5772Sas200622 extern adjoin_status_t ads_join(char *, char *, char *, char *, int); 905331Samw extern char *adjoin_report_err(adjoin_status_t status); 91*5772Sas200622 extern int ads_domain_change_cleanup(char *); 925331Samw 935331Samw /* DYNDNS functions */ 94*5772Sas200622 extern int dns_msgid_init(void); 955331Samw extern int dyndns_update(void); 965331Samw extern int dyndns_clear_rev_zone(void); 975331Samw 985331Samw /* Kerberos initialization function */ 995331Samw extern int smb_kinit(char *user, char *passwd); 1005331Samw 1015331Samw 1025331Samw /* NETBIOS Functions */ 103*5772Sas200622 extern int msdcs_lookup_ads(char *); 104*5772Sas200622 extern int smb_netbios_start(void); 1055331Samw extern void smb_netbios_shutdown(void); 1065331Samw extern void smb_netbios_name_reconfig(void); 1075331Samw 1085331Samw /* Browser Configure */ 1095331Samw extern void smb_browser_config(void); 1105331Samw 1115331Samw extern void smb_netlogon_request(int, int, char *); 1125331Samw 1135331Samw /* 1145331Samw * NIC listing and config 1155331Samw */ 1165331Samw #define MAXIFS 256 1175331Samw #define SIZE_IP 17 1185331Samw 1195331Samw typedef struct { 1205331Samw char ifname[LIFNAMSIZ]; 1215331Samw uint32_t ip; 1225331Samw uint32_t mask; 1235331Samw uint32_t broadcast; 1245331Samw boolean_t exclude; 1255331Samw uint64_t flags; 1265331Samw char groupname[LIFGRNAMSIZ]; 1275331Samw char **aliases; 1285331Samw int naliases; 1295331Samw } net_cfg_t; 1305331Samw typedef struct { 1315331Samw net_cfg_t *net_cfg_list; 1325331Samw int net_cfg_cnt; 1335331Samw } net_cfg_list_t; 1345331Samw 1355331Samw struct if_list { 1365331Samw char name[IFNAMSIZ+1]; 1375331Samw struct if_list *next; 1385331Samw }; 1395331Samw 1405331Samw struct ip_alias { 1415331Samw char name[SIZE_IP]; 1425331Samw struct ip_alias *next; 1435331Samw }; 1445331Samw 1455331Samw #define GATEWAY_FILE "/etc/defaultrouter" 1465331Samw 1475331Samw /* NIC Config functions */ 1485331Samw extern int smb_get_nameservers(struct in_addr *, int); 1495331Samw extern void smb_nic_lock(void); 1505331Samw extern void smb_nic_unlock(void); 1515331Samw extern int smb_nic_init(void); 1525331Samw extern void smb_nic_build_info(void); 1535331Samw extern net_cfg_t *smb_nic_get_byind(int, net_cfg_t *); 1545331Samw extern net_cfg_t *smb_nic_get_bysubnet(uint32_t, net_cfg_t *); 1555331Samw extern net_cfg_t *smb_nic_get_byip(uint32_t, net_cfg_t *); 1565331Samw extern int smb_nic_get_num(void); 1575331Samw extern int smb_nic_get_IP(char *, uint32_t *uip); 1585331Samw extern int smb_nic_get_broadcast(char *, uint32_t *uip); 1595331Samw extern int smb_nic_get_netmask(char *, uint32_t *uip); 1605331Samw extern int smb_nic_get_IP_aliases(char *, struct ip_alias **); 1615331Samw extern int smb_nic_get_number(void); 1625331Samw extern int smb_nic_get_num_physical(void); 1635331Samw extern int smb_nic_get_num_logical(void); 1645331Samw extern int smb_nic_get_num_aliases(char *); 1655331Samw extern int smb_nic_get_default_gateway(char *, unsigned int); 1665331Samw extern int smb_nic_flags(char *, uint64_t *); 1675331Samw extern int smb_nic_build_if_name(char ***); 1685331Samw extern int smb_nic_build_network_structures(net_cfg_t **, int *); 1695331Samw extern char *smb_nic_get_ifnames(int, int); 1705331Samw extern int smb_nic_validate_ip_address(char *); 1715331Samw extern int smb_nic_status(char *, uint64_t); 1725331Samw extern int smb_nic_get_group(char *lifname, char *grname); 1735331Samw extern int smb_nic_set_group(char *lifname, char *grname); 1745331Samw extern int smb_nic_clear_niclist(net_cfg_t *, int); 1755331Samw extern int smb_nic_clear_name_list(char **, int); 1765331Samw extern int smb_nic_clear_ip_alias(struct ip_alias *); 1775331Samw 1785331Samw #ifdef __cplusplus 1795331Samw } 1805331Samw #endif 1815331Samw 1825331Samw #endif /* _LIBSMBNS_H */ 183