if (ads->server.ldap_server) {
bool ok = false;
- struct sockaddr_storage ss;
+ struct samba_sockaddr ss;
DBG_DEBUG("Resolving name of LDAP server '%s'.\n",
ads->server.ldap_server);
goto out;
}
- if (is_zero_addr(&ss)) {
+ if (is_zero_addr(&ss.u.ss)) {
status = ADS_ERROR_NT(NT_STATUS_NOT_FOUND);
goto out;
}
- ok = ads_try_connect(ads, ads->server.gc, &ss);
+ ok = ads_try_connect(ads, ads->server.gc, &ss.u.ss);
if (ok) {
goto got_connection;
}
uint16_t port = 0;
SMBCSRV *srv = NULL;
SMBCFILE *dir = NULL;
- struct sockaddr_storage rem_ss;
+ struct samba_sockaddr rem_ss;
TALLOC_CTX *frame = talloc_stackframe();
if (!context || !context->internal->initialized) {
* Get the backup list ...
*/
if (!name_status_find(wgroup, 0, 0,
- &rem_ss, buserver)) {
+ &rem_ss.u.ss, buserver)) {
char addr[INET6_ADDRSTRLEN];
- print_sockaddr(addr, sizeof(addr), &rem_ss);
+ print_sockaddr(addr,
+ sizeof(addr),
+ &rem_ss.u.ss);
DEBUG(0,("Could not get name of "
"local/domain master browser "
"for workgroup %s from "
*********************************************************/
bool resolve_name(const char *name,
- struct sockaddr_storage *return_ss,
- int name_type,
- bool prefer_ipv4)
+ struct samba_sockaddr *return_ss,
+ int name_type,
+ bool prefer_ipv4)
{
struct samba_sockaddr *sa_list = NULL;
char *sitename = NULL;
TALLOC_CTX *frame = NULL;
if (is_ipaddress(name)) {
- return interpret_string_addr(return_ss, name, AI_NUMERICHOST);
+ struct sockaddr_storage ss;
+ bool ok = interpret_string_addr(&ss, name, AI_NUMERICHOST);
+ if (!ok) {
+ return false;
+ }
+ sockaddr_storage_to_samba_sockaddr(return_ss, &ss);
+ return true;
}
frame = talloc_stackframe();
for (i=0; i<count; i++) {
if (!is_broadcast_addr(&sa_list[i].u.sa) &&
(sa_list[i].u.ss.ss_family == AF_INET)) {
- *return_ss = sa_list[i].u.ss;
+ *return_ss = sa_list[i];
TALLOC_FREE(sa_list);
TALLOC_FREE(frame);
return True;
/* only return valid addresses for TCP connections */
for (i=0; i<count; i++) {
if (!is_broadcast_addr(&sa_list[i].u.sa)) {
- *return_ss = sa_list[i].u.ss;
+ *return_ss = sa_list[i];
TALLOC_FREE(sa_list);
TALLOC_FREE(frame);
return True;
/* explicit lookup; resolve_name() will
* handle names & IP addresses */
- if (resolve_name(name, &name_sa.u.ss, 0x20, true)) {
+ if (resolve_name(name, &name_sa, 0x20, true)) {
char addr[INET6_ADDRSTRLEN];
bool has_entry;
bool ok;
size_t *ret_count,
const char **resolve_order);
bool resolve_name(const char *name,
- struct sockaddr_storage *return_ss,
- int name_type,
- bool prefer_ipv4);
+ struct samba_sockaddr *return_ss,
+ int name_type,
+ bool prefer_ipv4);
NTSTATUS resolve_name_list(TALLOC_CTX *ctx,
const char *name,
int name_type,
bool ok;
ok = resolve_name(remote_name,
- &saddr.u.ss,
+ &saddr,
NBT_NAME_SERVER,
false);
if (!ok) {
struct sockaddr_storage *client_ss, const char *remote_machine)
{
NTSTATUS ret;
- struct sockaddr_storage rm_addr;
+ struct samba_sockaddr rm_addr;
char addr[INET6_ADDRSTRLEN];
struct cli_credentials *anon_creds = NULL;
struct smb_transports ts =
DEBUG(2,("spoolss_connect_to_client: Can't resolve address for %s\n", remote_machine));
return false;
}
- print_sockaddr(addr, sizeof(addr), &rm_addr);
+ print_sockaddr(addr, sizeof(addr), &rm_addr.u.ss);
} else {
- rm_addr = *client_ss;
- print_sockaddr(addr, sizeof(addr), &rm_addr);
+ sockaddr_storage_to_samba_sockaddr(&rm_addr, client_ss);
+ print_sockaddr(addr, sizeof(addr), &rm_addr.u.ss);
DEBUG(5,("spoolss_connect_to_client: Using address %s (no name resolution necessary)\n",
addr));
}
pp_cli,
lp_netbios_name(),
remote_machine,
- &rm_addr,
+ &rm_addr.u.ss,
&ts,
"IPC$",
"IPC",
char *p;
int retarget_type = 0x20;
int retarget_port = NBT_SMB_PORT;
- struct sockaddr_storage retarget_addr;
+ struct samba_sockaddr retarget_addr;
struct sockaddr_in *in_addr;
bool ret = false;
uint8_t outbuf[10];
goto fail;
}
- if (retarget_addr.ss_family != AF_INET) {
+ if (retarget_addr.u.ss.ss_family != AF_INET) {
DEBUG(10, ("Retarget target not an IPv4 addr\n"));
goto fail;
}
- in_addr = (struct sockaddr_in *)(void *)&retarget_addr;
+ in_addr = &retarget_addr.u.in;
_smb_setlen(outbuf, 6);
SCVAL(outbuf, 0, 0x84);
static bool run_bad_nbt_session(int dummy)
{
struct nmb_name called, calling;
- struct sockaddr_storage ss;
+ struct samba_sockaddr ss;
NTSTATUS status;
int fd;
bool ret;
return false;
}
- status = open_socket_out(&ss, NBT_SMB_PORT, 10000, &fd);
+ status = open_socket_out(&ss.u.ss, NBT_SMB_PORT, 10000, &fd);
if (!NT_STATUS_IS_OK(status)) {
d_fprintf(stderr, "open_socket_out failed: %s\n",
nt_errstr(status));
int fd;
TLDAPRC rc;
NTSTATUS status;
- struct sockaddr_storage addr;
+ struct samba_sockaddr addr;
struct tevent_context *ev;
struct tevent_req *req;
char *basedn;
d_printf("could not find host %s\n", host);
return false;
}
- status = open_socket_out(&addr, tcp_port, 9999, &fd);
+ status = open_socket_out(&addr.u.ss, tcp_port, 9999, &fd);
if (!NT_STATUS_IS_OK(status)) {
d_printf("open_socket_out failed: %s\n", nt_errstr(status));
return false;
};
struct smbXcli_transport *xtp = NULL;
struct smbXcli_conn *conn;
- struct sockaddr_storage ss;
+ struct samba_sockaddr ss;
NTSTATUS status;
int fd;
bool ok;
return false;
}
- status = open_socket_out(&ss, 445, 10000, &fd);
+ status = open_socket_out(&ss.u.ss, 445, 10000, &fd);
if (!NT_STATUS_IS_OK(status)) {
d_fprintf(stderr, "open_socket_out failed: %s\n",
nt_errstr(status));
};
struct smbXcli_transport *xtp = NULL;
struct smbXcli_conn *conn;
- struct sockaddr_storage ss;
+ struct samba_sockaddr ss;
NTSTATUS status;
int fd;
bool ok;
return false;
}
- status = open_socket_out(&ss, 445, 10000, &fd);
+ status = open_socket_out(&ss.u.ss, 445, 10000, &fd);
if (!NT_STATUS_IS_OK(status)) {
d_fprintf(stderr, "open_socket_out failed: %s\n",
nt_errstr(status));
};
struct smbXcli_transport *xtp = NULL;
struct smbXcli_conn *conn;
- struct sockaddr_storage ss;
+ struct samba_sockaddr ss;
NTSTATUS status;
int fd;
bool ok;
return false;
}
- status = open_socket_out(&ss, 445, 10000, &fd);
+ status = open_socket_out(&ss.u.ss, 445, 10000, &fd);
if (!NT_STATUS_IS_OK(status)) {
d_fprintf(stderr, "open_socket_out failed: %s\n",
nt_errstr(status));
const char *printername = NULL;
struct cli_state *cli = NULL;
struct rpc_pipe_client *pipe_hnd = NULL;
- struct sockaddr_storage server_ss = { 0 };
+ struct samba_sockaddr server_ss = { 0 };
NTSTATUS nt_status;
ADS_MODLIST mods = NULL;
char *prt_dn = NULL;
&cli,
lp_netbios_name(),
servername,
- &server_ss,
+ &server_ss.u.ss,
&ts,
"IPC$",
"IPC",
/* lookup a hostname giving an IP */
static int net_lookup_host(struct net_context *c, int argc, const char **argv)
{
- struct sockaddr_storage ss;
+ struct samba_sockaddr ss;
int name_type = 0x20;
char addr[INET6_ADDRSTRLEN];
const char *name = argv[0];
return -1;
}
- print_sockaddr(addr, sizeof(addr), &ss);
+ print_sockaddr(addr, sizeof(addr), &ss.u.ss);
d_printf("%s\n", addr);
return 0;
}
*server_name = SMB_STRDUP(addr);
}
} else if (*server_name) {
+ struct samba_sockaddr ss;
/* resolve the IP address */
- if (!resolve_name(*server_name, server_ss, 0x20, false)) {
+ if (!resolve_name(*server_name, &ss, 0x20, false)) {
DEBUG(1,("Unable to resolve server name\n"));
return false;
}
+ *server_ss = ss.u.ss;
} else if (flags & NET_FLAGS_PDC) {
fstring dc_name;
struct sockaddr_storage pdc_ss;
*server_name = SMB_STRDUP(dc_name);
*server_ss = pdc_ss;
} else if (flags & NET_FLAGS_DMB) {
- struct sockaddr_storage msbrow_ss;
+ struct samba_sockaddr msbrow_ss;
char addr[INET6_ADDRSTRLEN];
/* if (!resolve_name(MSBROWSE, &msbrow_ip, 1, false)) */
DEBUG(1,("Unable to resolve domain browser via name lookup\n"));
return false;
}
- *server_ss = msbrow_ss;
+ *server_ss = msbrow_ss.u.ss;
print_sockaddr(addr, sizeof(addr), server_ss);
*server_name = SMB_STRDUP(addr);
} else if (flags & NET_FLAGS_MASTER) {
- struct sockaddr_storage brow_ss;
+ struct samba_sockaddr brow_ss;
char addr[INET6_ADDRSTRLEN];
if (!resolve_name(d, &brow_ss, 0x1D, false)) {
/* go looking for workgroups */
DEBUG(1,("Unable to resolve master browser via name lookup\n"));
return false;
}
- *server_ss = brow_ss;
+ *server_ss = brow_ss.u.ss;
print_sockaddr(addr, sizeof(addr), server_ss);
*server_name = SMB_STRDUP(addr);
} else if (!(flags & NET_FLAGS_LOCALHOST_DEFAULT_INSANE)) {
static void start_filter(char *desthost)
{
int s, c;
- struct sockaddr_storage dest_ss;
+ struct samba_sockaddr dest_ss;
struct sockaddr_storage my_ss;
CatchChild();
smb_set_close_on_exec(c);
if (fork() == 0) {
close(s);
- filter_child(c, &dest_ss);
+ filter_child(c, &dest_ss.u.ss);
exit(0);
} else {
close(c);
struct tldap_context **pld)
{
struct netr_DsRGetDCNameInfo *dcinfo;
- struct sockaddr_storage dcaddr = {
- .ss_family = AF_UNSPEC,
- };
+ struct samba_sockaddr dcaddr = {};
struct sockaddr_storage *pdcaddr = NULL;
struct winbindd_domain *creds_domain = NULL;
struct cli_credentials *creds;
*/
if (strequal(domname, lp_realm()) || strequal(domname, lp_workgroup()))
{
- pdcaddr = &dcaddr;
+ pdcaddr = &dcaddr.u.ss;
}
ok = create_local_private_krb5_conf_for_domain(
return NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND;
}
- status = open_socket_out(&dcaddr, tcp_port, 10000, &fd);
+ status = open_socket_out(&dcaddr.u.ss, tcp_port, 10000, &fd);
if (!NT_STATUS_IS_OK(status)) {
DBG_DEBUG("open_socket_out failed: %s\n", nt_errstr(status));
TALLOC_FREE(dcinfo);
return false;
}
} else {
+ struct samba_sockaddr dcaddr;
ok = resolve_name(saf_servername,
- &domain->dcaddr,
+ &dcaddr,
0x20,
true);
if (!ok) {
goto fail;
}
+ domain->dcaddr = dcaddr.u.ss;
}
TALLOC_FREE(domain->dcname);