struct smbd_release_ip_state {
struct smbXsrv_connection *xconn;
struct tevent_immediate *im;
- struct sockaddr_storage srv;
- struct sockaddr_storage clnt;
- char addr[INET6_ADDRSTRLEN];
+ struct samba_sockaddr srv;
+ struct samba_sockaddr clnt;
+ struct ssaddr_buf addr;
};
static int release_ip(struct tevent_context *ev,
}
if (NT_STATUS_EQUAL(xconn->transport.status, NT_STATUS_CONNECTION_IN_USE)) {
- ctdbd_passed_ips(cconn, &s->srv, &s->clnt, release_ip, s);
+ ctdbd_passed_ips(
+ cconn, &s->srv.u.ss, &s->clnt.u.ss, release_ip, s);
} else {
- ctdbd_unregister_ips(cconn, &s->srv, &s->clnt, release_ip, s);
+ ctdbd_unregister_ips(
+ cconn, &s->srv.u.ss, &s->clnt.u.ss, release_ip, s);
}
return 0;
struct smbd_release_ip_state);
struct smbXsrv_connection *xconn = state->xconn;
const char *ip;
- const char *addr = state->addr;
+ const char *addr = state->addr.buf;
const char *p = addr;
if (msglen == 0) {
}
static NTSTATUS smbd_register_ips(struct smbXsrv_connection *xconn,
- struct sockaddr_storage *srv,
- struct sockaddr_storage *clnt)
+ struct samba_sockaddr *srv,
+ struct samba_sockaddr *clnt)
{
struct smbd_release_ip_state *state;
struct ctdbd_connection *cconn;
}
state->srv = *srv;
state->clnt = *clnt;
- if (print_sockaddr(state->addr, sizeof(state->addr), srv) == NULL) {
- return NT_STATUS_NO_MEMORY;
- }
+ ssaddr_str_buf(srv, &state->addr);
if (xconn->client->server_multi_channel_enabled) {
ret = ctdbd_public_ip_foreach(cconn,
match_cluster_movable_ip,
- srv);
+ &srv->u.ss);
if (ret == EADDRNOTAVAIL) {
xconn->has_cluster_movable_ip = true;
DBG_DEBUG("cluster movable IP on %s\n",
}
}
- ret = ctdbd_register_ips(cconn, srv, clnt, release_ip, state);
+ ret = ctdbd_register_ips(
+ cconn, &srv->u.ss, &clnt->u.ss, release_ip, state);
if (ret != 0) {
return map_nt_error_from_unix(ret);
}
*/
NTSTATUS status;
- status = smbd_register_ips(xconn, &ss_srv.u.ss, &ss_clnt.u.ss);
+ status = smbd_register_ips(xconn, &ss_srv, &ss_clnt);
if (!NT_STATUS_IS_OK(status)) {
DEBUG(0, ("ctdbd_register_ips failed: %s\n",
nt_errstr(status)));