mirror of
https://github.com/samba-team/samba.git
synced 2025-08-02 00:22:11 +03:00
lib/util Bring procid_str() into lib/util as server_id_string()
This is needed for OpenChange, which prints Samba struct server_id values in debug messages. Andrew Bartlett
This commit is contained in:
36
lib/util/server_id.c
Normal file
36
lib/util/server_id.c
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
/*
|
||||||
|
Unix SMB/CIFS implementation.
|
||||||
|
Samba utility functions
|
||||||
|
Copyright (C) Andrew Bartlett 2011
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "includes.h"
|
||||||
|
#include "librpc/gen_ndr/server_id.h"
|
||||||
|
|
||||||
|
char *server_id_str(TALLOC_CTX *mem_ctx, const struct server_id *id)
|
||||||
|
{
|
||||||
|
if (id->vnn == NONCLUSTER_VNN && id->task_id == 0) {
|
||||||
|
return talloc_asprintf(mem_ctx,
|
||||||
|
"%llu",
|
||||||
|
(unsigned long long)id->pid);
|
||||||
|
} else {
|
||||||
|
return talloc_asprintf(mem_ctx,
|
||||||
|
"%u:%llu:%u",
|
||||||
|
(unsigned)id->vnn,
|
||||||
|
(unsigned long long)id->pid,
|
||||||
|
(unsigned)id->task_id);
|
||||||
|
}
|
||||||
|
}
|
@ -916,5 +916,7 @@ char *data_path(TALLOC_CTX *mem_ctx, const char *name);
|
|||||||
**/
|
**/
|
||||||
const char *shlib_ext(void);
|
const char *shlib_ext(void);
|
||||||
|
|
||||||
|
struct server_id;
|
||||||
|
char *server_id_str(TALLOC_CTX *mem_ctx, const struct server_id *id);
|
||||||
|
|
||||||
#endif /* _SAMBA_UTIL_H_ */
|
#endif /* _SAMBA_UTIL_H_ */
|
||||||
|
@ -5,7 +5,8 @@ common_util_sources = '''talloc_stack.c smb_threads.c xfile.c data_blob.c
|
|||||||
genrand.c fsusage.c blocking.c become_daemon.c
|
genrand.c fsusage.c blocking.c become_daemon.c
|
||||||
signal.c system.c params.c util.c util_id.c util_net.c
|
signal.c system.c params.c util.c util_id.c util_net.c
|
||||||
util_strlist.c util_paths.c idtree.c debug.c fault.c base64.c
|
util_strlist.c util_paths.c idtree.c debug.c fault.c base64.c
|
||||||
util_str.c util_str_common.c substitute.c ms_fnmatch.c'''
|
util_str.c util_str_common.c substitute.c ms_fnmatch.c
|
||||||
|
server_id.c'''
|
||||||
|
|
||||||
common_util_headers = 'debug.h'
|
common_util_headers = 'debug.h'
|
||||||
common_util_public_deps = 'talloc pthread LIBCRYPTO CHARSET'
|
common_util_public_deps = 'talloc pthread LIBCRYPTO CHARSET'
|
||||||
|
@ -4,6 +4,13 @@
|
|||||||
interface server_id
|
interface server_id
|
||||||
{
|
{
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Virtual Node Numbers are identifying a node within a cluster.
|
||||||
|
* Ctdbd sets this, we retrieve our vnn from it.
|
||||||
|
*/
|
||||||
|
|
||||||
|
const int NONCLUSTER_VNN = 0xFFFFFFFF;
|
||||||
|
|
||||||
/* used to look like the following, note that unique_id was not
|
/* used to look like the following, note that unique_id was not
|
||||||
* marshalled at all...
|
* marshalled at all...
|
||||||
|
|
||||||
|
@ -429,7 +429,7 @@ UTIL_OBJ = ../lib/util/rbtree.o ../lib/util/signal.o ../lib/util/time.o \
|
|||||||
../lib/util/tevent_werror.o \
|
../lib/util/tevent_werror.o \
|
||||||
../lib/util/smb_threads.o ../lib/util/util_id.o \
|
../lib/util/smb_threads.o ../lib/util/util_id.o \
|
||||||
../lib/util/blocking.o ../lib/util/rfc1738.o \
|
../lib/util/blocking.o ../lib/util/rfc1738.o \
|
||||||
../lib/util/select.o ../lib/util/util_pw.o
|
../lib/util/select.o ../lib/util/util_pw.o ../lib/util/server_id.o
|
||||||
|
|
||||||
CRYPTO_OBJ = ../lib/crypto/crc32.o ../lib/crypto/md5.o \
|
CRYPTO_OBJ = ../lib/crypto/crc32.o ../lib/crypto/md5.o \
|
||||||
../lib/crypto/hmacmd5.o ../lib/crypto/arcfour.o \
|
../lib/crypto/hmacmd5.o ../lib/crypto/arcfour.o \
|
||||||
|
@ -48,13 +48,6 @@
|
|||||||
#define FLAG_MSG_DBWRAP 0x0020
|
#define FLAG_MSG_DBWRAP 0x0020
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Virtual Node Numbers are identifying a node within a cluster. Ctdbd sets
|
|
||||||
* this, we retrieve our vnn from it.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define NONCLUSTER_VNN (0xFFFFFFFF)
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ctdb gives us 64-bit server ids for messaging_send. This is done to avoid
|
* ctdb gives us 64-bit server ids for messaging_send. This is done to avoid
|
||||||
* pid clashes and to be able to register for special messages like "all
|
* pid clashes and to be able to register for special messages like "all
|
||||||
|
@ -594,7 +594,6 @@ bool cluster_id_equal(const struct server_id *id1,
|
|||||||
const struct server_id *id2);
|
const struct server_id *id2);
|
||||||
bool procid_is_me(const struct server_id *pid);
|
bool procid_is_me(const struct server_id *pid);
|
||||||
struct server_id interpret_pid(const char *pid_string);
|
struct server_id interpret_pid(const char *pid_string);
|
||||||
char *procid_str(TALLOC_CTX *mem_ctx, const struct server_id *pid);
|
|
||||||
char *procid_str_static(const struct server_id *pid);
|
char *procid_str_static(const struct server_id *pid);
|
||||||
bool procid_valid(const struct server_id *pid);
|
bool procid_valid(const struct server_id *pid);
|
||||||
bool procid_is_local(const struct server_id *pid);
|
bool procid_is_local(const struct server_id *pid);
|
||||||
|
@ -108,7 +108,7 @@ static bool g_lock_parse(TALLOC_CTX *mem_ctx, TDB_DATA data,
|
|||||||
DEBUG(10, ("locks:\n"));
|
DEBUG(10, ("locks:\n"));
|
||||||
for (i=0; i<num_locks; i++) {
|
for (i=0; i<num_locks; i++) {
|
||||||
DEBUGADD(10, ("%s: %s %s\n",
|
DEBUGADD(10, ("%s: %s %s\n",
|
||||||
procid_str(talloc_tos(), &locks[i].pid),
|
server_id_str(talloc_tos(), &locks[i].pid),
|
||||||
((locks[i].lock_type & 1) == G_LOCK_READ) ?
|
((locks[i].lock_type & 1) == G_LOCK_READ) ?
|
||||||
"read" : "write",
|
"read" : "write",
|
||||||
(locks[i].lock_type & G_LOCK_PENDING) ?
|
(locks[i].lock_type & G_LOCK_PENDING) ?
|
||||||
@ -118,7 +118,7 @@ static bool g_lock_parse(TALLOC_CTX *mem_ctx, TDB_DATA data,
|
|||||||
&& !process_exists(locks[i].pid)) {
|
&& !process_exists(locks[i].pid)) {
|
||||||
|
|
||||||
DEBUGADD(10, ("lock owner %s died -- discarding\n",
|
DEBUGADD(10, ("lock owner %s died -- discarding\n",
|
||||||
procid_str(talloc_tos(),
|
server_id_str(talloc_tos(),
|
||||||
&locks[i].pid)));
|
&locks[i].pid)));
|
||||||
|
|
||||||
if (i < (num_locks-1)) {
|
if (i < (num_locks-1)) {
|
||||||
@ -146,7 +146,7 @@ static void g_lock_cleanup(int *pnum_locks, struct g_lock_rec *locks)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
DEBUGADD(10, ("%s does not exist -- discarding\n",
|
DEBUGADD(10, ("%s does not exist -- discarding\n",
|
||||||
procid_str(talloc_tos(), &locks[i].pid)));
|
server_id_str(talloc_tos(), &locks[i].pid)));
|
||||||
|
|
||||||
if (i < (num_locks-1)) {
|
if (i < (num_locks-1)) {
|
||||||
locks[i] = locks[num_locks-1];
|
locks[i] = locks[num_locks-1];
|
||||||
@ -496,7 +496,7 @@ static void g_lock_got_retry(struct messaging_context *msg,
|
|||||||
bool *pretry = (bool *)private_data;
|
bool *pretry = (bool *)private_data;
|
||||||
|
|
||||||
DEBUG(10, ("Got retry message from pid %s\n",
|
DEBUG(10, ("Got retry message from pid %s\n",
|
||||||
procid_str(talloc_tos(), &server_id)));
|
server_id_str(talloc_tos(), &server_id)));
|
||||||
|
|
||||||
*pretry = true;
|
*pretry = true;
|
||||||
}
|
}
|
||||||
@ -587,7 +587,7 @@ static NTSTATUS g_lock_force_unlock(struct g_lock_ctx *ctx, const char *name,
|
|||||||
&data_blob_null);
|
&data_blob_null);
|
||||||
if (!NT_STATUS_IS_OK(status)) {
|
if (!NT_STATUS_IS_OK(status)) {
|
||||||
DEBUG(1, ("sending retry to %s failed: %s\n",
|
DEBUG(1, ("sending retry to %s failed: %s\n",
|
||||||
procid_str(talloc_tos(),
|
server_id_str(talloc_tos(),
|
||||||
&locks[i].pid),
|
&locks[i].pid),
|
||||||
nt_errstr(status)));
|
nt_errstr(status)));
|
||||||
} else {
|
} else {
|
||||||
|
@ -1987,25 +1987,9 @@ struct server_id interpret_pid(const char *pid_string)
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *procid_str(TALLOC_CTX *mem_ctx, const struct server_id *pid)
|
|
||||||
{
|
|
||||||
if (pid->vnn == NONCLUSTER_VNN && pid->task_id == 0) {
|
|
||||||
return talloc_asprintf(mem_ctx,
|
|
||||||
"%llu",
|
|
||||||
(unsigned long long)pid->pid);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return talloc_asprintf(mem_ctx,
|
|
||||||
"%u:%llu:%u",
|
|
||||||
(unsigned)pid->vnn,
|
|
||||||
(unsigned long long)pid->pid,
|
|
||||||
(unsigned)pid->task_id);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
char *procid_str_static(const struct server_id *pid)
|
char *procid_str_static(const struct server_id *pid)
|
||||||
{
|
{
|
||||||
return procid_str(talloc_tos(), pid);
|
return server_id_str(talloc_tos(), pid);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool procid_valid(const struct server_id *pid)
|
bool procid_valid(const struct server_id *pid)
|
||||||
|
@ -51,7 +51,7 @@ static void print_lock_struct(unsigned int i, struct lock_struct *pls)
|
|||||||
i,
|
i,
|
||||||
(unsigned long long)pls->context.smblctx,
|
(unsigned long long)pls->context.smblctx,
|
||||||
(unsigned int)pls->context.tid,
|
(unsigned int)pls->context.tid,
|
||||||
procid_str(talloc_tos(), &pls->context.pid) ));
|
server_id_str(talloc_tos(), &pls->context.pid) ));
|
||||||
|
|
||||||
DEBUG(10,("start = %.0f, size = %.0f, fnum = %d, %s %s\n",
|
DEBUG(10,("start = %.0f, size = %.0f, fnum = %d, %s %s\n",
|
||||||
(double)pls->start,
|
(double)pls->start,
|
||||||
|
@ -459,7 +459,7 @@ void process_oplock_async_level2_break_message(struct messaging_context *msg_ctx
|
|||||||
message_to_share_mode_entry(&msg, (char *)data->data);
|
message_to_share_mode_entry(&msg, (char *)data->data);
|
||||||
|
|
||||||
DEBUG(10, ("Got oplock async level 2 break message from pid %s: "
|
DEBUG(10, ("Got oplock async level 2 break message from pid %s: "
|
||||||
"%s/%lu\n", procid_str(talloc_tos(), &src),
|
"%s/%lu\n", server_id_str(talloc_tos(), &src),
|
||||||
file_id_string_tos(&msg.id), msg.share_file_id));
|
file_id_string_tos(&msg.id), msg.share_file_id));
|
||||||
|
|
||||||
fsp = initial_break_processing(sconn, msg.id, msg.share_file_id);
|
fsp = initial_break_processing(sconn, msg.id, msg.share_file_id);
|
||||||
@ -510,7 +510,7 @@ static void process_oplock_break_message(struct messaging_context *msg_ctx,
|
|||||||
message_to_share_mode_entry(&msg, (char *)data->data);
|
message_to_share_mode_entry(&msg, (char *)data->data);
|
||||||
|
|
||||||
DEBUG(10, ("Got oplock break message from pid %s: %s/%lu\n",
|
DEBUG(10, ("Got oplock break message from pid %s: %s/%lu\n",
|
||||||
procid_str(talloc_tos(), &src), file_id_string_tos(&msg.id),
|
server_id_str(talloc_tos(), &src), file_id_string_tos(&msg.id),
|
||||||
msg.share_file_id));
|
msg.share_file_id));
|
||||||
|
|
||||||
fsp = initial_break_processing(sconn, msg.id, msg.share_file_id);
|
fsp = initial_break_processing(sconn, msg.id, msg.share_file_id);
|
||||||
@ -617,7 +617,7 @@ static void process_kernel_oplock_break(struct messaging_context *msg_ctx,
|
|||||||
file_id = (unsigned long)IVAL(data->data, 24);
|
file_id = (unsigned long)IVAL(data->data, 24);
|
||||||
|
|
||||||
DEBUG(10, ("Got kernel oplock break message from pid %s: %s/%u\n",
|
DEBUG(10, ("Got kernel oplock break message from pid %s: %s/%u\n",
|
||||||
procid_str(talloc_tos(), &src), file_id_string_tos(&id),
|
server_id_str(talloc_tos(), &src), file_id_string_tos(&id),
|
||||||
(unsigned int)file_id));
|
(unsigned int)file_id));
|
||||||
|
|
||||||
fsp = initial_break_processing(sconn, id, file_id);
|
fsp = initial_break_processing(sconn, id, file_id);
|
||||||
@ -704,7 +704,7 @@ static void process_oplock_break_response(struct messaging_context *msg_ctx,
|
|||||||
message_to_share_mode_entry(&msg, (char *)data->data);
|
message_to_share_mode_entry(&msg, (char *)data->data);
|
||||||
|
|
||||||
DEBUG(10, ("Got oplock break response from pid %s: %s/%lu mid %llu\n",
|
DEBUG(10, ("Got oplock break response from pid %s: %s/%lu mid %llu\n",
|
||||||
procid_str(talloc_tos(), &src), file_id_string_tos(&msg.id),
|
server_id_str(talloc_tos(), &src), file_id_string_tos(&msg.id),
|
||||||
msg.share_file_id, (unsigned long long)msg.op_mid));
|
msg.share_file_id, (unsigned long long)msg.op_mid));
|
||||||
|
|
||||||
schedule_deferred_open_message_smb(msg.op_mid);
|
schedule_deferred_open_message_smb(msg.op_mid);
|
||||||
@ -732,7 +732,7 @@ static void process_open_retry_message(struct messaging_context *msg_ctx,
|
|||||||
message_to_share_mode_entry(&msg, (char *)data->data);
|
message_to_share_mode_entry(&msg, (char *)data->data);
|
||||||
|
|
||||||
DEBUG(10, ("Got open retry msg from pid %s: %s mid %llu\n",
|
DEBUG(10, ("Got open retry msg from pid %s: %s mid %llu\n",
|
||||||
procid_str(talloc_tos(), &src), file_id_string_tos(&msg.id),
|
server_id_str(talloc_tos(), &src), file_id_string_tos(&msg.id),
|
||||||
(unsigned long long)msg.op_mid));
|
(unsigned long long)msg.op_mid));
|
||||||
|
|
||||||
schedule_deferred_open_message_smb(msg.op_mid);
|
schedule_deferred_open_message_smb(msg.op_mid);
|
||||||
|
@ -1223,7 +1223,7 @@ static int shutdown_other_smbds(const struct connections_key *key,
|
|||||||
struct shutdown_state *state = (struct shutdown_state *)private_data;
|
struct shutdown_state *state = (struct shutdown_state *)private_data;
|
||||||
|
|
||||||
DEBUG(10, ("shutdown_other_smbds: %s, %s\n",
|
DEBUG(10, ("shutdown_other_smbds: %s, %s\n",
|
||||||
procid_str(talloc_tos(), &crec->pid), crec->addr));
|
server_id_str(talloc_tos(), &crec->pid), crec->addr));
|
||||||
|
|
||||||
if (!process_exists(crec->pid)) {
|
if (!process_exists(crec->pid)) {
|
||||||
DEBUG(10, ("process does not exist\n"));
|
DEBUG(10, ("process does not exist\n"));
|
||||||
|
@ -113,7 +113,7 @@ static int net_g_lock_dump_fn(struct server_id pid, enum g_lock_type lock_type,
|
|||||||
{
|
{
|
||||||
char *pidstr;
|
char *pidstr;
|
||||||
|
|
||||||
pidstr = procid_str(talloc_tos(), &pid);
|
pidstr = server_id_str(talloc_tos(), &pid);
|
||||||
d_printf("%s: %s (%s)\n", pidstr,
|
d_printf("%s: %s (%s)\n", pidstr,
|
||||||
(lock_type & 1) ? "WRITE" : "READ",
|
(lock_type & 1) ? "WRITE" : "READ",
|
||||||
(lock_type & G_LOCK_PENDING) ? "pending" : "holder");
|
(lock_type & G_LOCK_PENDING) ? "pending" : "holder");
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
static int net_serverid_list_fn(const struct server_id *id,
|
static int net_serverid_list_fn(const struct server_id *id,
|
||||||
uint32_t msg_flags, void *priv)
|
uint32_t msg_flags, void *priv)
|
||||||
{
|
{
|
||||||
char *str = procid_str(talloc_tos(), id);
|
char *str = server_id_str(talloc_tos(), id);
|
||||||
d_printf("%s %llu 0x%x\n", str, (unsigned long long)id->unique_id,
|
d_printf("%s %llu 0x%x\n", str, (unsigned long long)id->unique_id,
|
||||||
(unsigned int)msg_flags);
|
(unsigned int)msg_flags);
|
||||||
TALLOC_FREE(str);
|
TALLOC_FREE(str);
|
||||||
@ -51,7 +51,7 @@ static int net_serverid_wipe_fn(struct db_record *rec,
|
|||||||
}
|
}
|
||||||
status = rec->delete_rec(rec);
|
status = rec->delete_rec(rec);
|
||||||
if (!NT_STATUS_IS_OK(status)) {
|
if (!NT_STATUS_IS_OK(status)) {
|
||||||
char *str = procid_str(talloc_tos(), id);
|
char *str = server_id_str(talloc_tos(), id);
|
||||||
DEBUG(1, ("Could not delete serverid.tdb record %s: %s\n",
|
DEBUG(1, ("Could not delete serverid.tdb record %s: %s\n",
|
||||||
str, nt_errstr(status)));
|
str, nt_errstr(status)));
|
||||||
TALLOC_FREE(str);
|
TALLOC_FREE(str);
|
||||||
@ -75,13 +75,13 @@ static int net_serverid_wipedbs_conn(
|
|||||||
NTSTATUS status;
|
NTSTATUS status;
|
||||||
|
|
||||||
DEBUG(10, ("Deleting connections.tdb record for pid %s\n",
|
DEBUG(10, ("Deleting connections.tdb record for pid %s\n",
|
||||||
procid_str(talloc_tos(), &key->pid)));
|
server_id_str(talloc_tos(), &key->pid)));
|
||||||
|
|
||||||
status = rec->delete_rec(rec);
|
status = rec->delete_rec(rec);
|
||||||
if (!NT_STATUS_IS_OK(status)) {
|
if (!NT_STATUS_IS_OK(status)) {
|
||||||
DEBUG(1, ("Could not delete connections.tdb record "
|
DEBUG(1, ("Could not delete connections.tdb record "
|
||||||
"for pid %s: %s\n",
|
"for pid %s: %s\n",
|
||||||
procid_str(talloc_tos(), &key->pid),
|
server_id_str(talloc_tos(), &key->pid),
|
||||||
nt_errstr(status)));
|
nt_errstr(status)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -97,13 +97,13 @@ static int net_serverid_wipedbs_sessionid(struct db_record *rec,
|
|||||||
NTSTATUS status;
|
NTSTATUS status;
|
||||||
|
|
||||||
DEBUG(10, ("Deleting sessionid.tdb record for pid %s\n",
|
DEBUG(10, ("Deleting sessionid.tdb record for pid %s\n",
|
||||||
procid_str(talloc_tos(), &session->pid)));
|
server_id_str(talloc_tos(), &session->pid)));
|
||||||
|
|
||||||
status = rec->delete_rec(rec);
|
status = rec->delete_rec(rec);
|
||||||
if (!NT_STATUS_IS_OK(status)) {
|
if (!NT_STATUS_IS_OK(status)) {
|
||||||
DEBUG(1, ("Could not delete session.tdb record "
|
DEBUG(1, ("Could not delete session.tdb record "
|
||||||
"for pid %s: %s\n",
|
"for pid %s: %s\n",
|
||||||
procid_str(talloc_tos(), &session->pid),
|
server_id_str(talloc_tos(), &session->pid),
|
||||||
nt_errstr(status)));
|
nt_errstr(status)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -119,7 +119,7 @@ static void print_pid_string_cb(struct messaging_context *msg,
|
|||||||
{
|
{
|
||||||
char *pidstr;
|
char *pidstr;
|
||||||
|
|
||||||
pidstr = procid_str(talloc_tos(), &pid);
|
pidstr = server_id_str(talloc_tos(), &pid);
|
||||||
printf("PID %s: %.*s", pidstr, (int)data->length,
|
printf("PID %s: %.*s", pidstr, (int)data->length,
|
||||||
(const char *)data->data);
|
(const char *)data->data);
|
||||||
TALLOC_FREE(pidstr);
|
TALLOC_FREE(pidstr);
|
||||||
@ -433,7 +433,7 @@ static void pong_cb(struct messaging_context *msg,
|
|||||||
struct server_id pid,
|
struct server_id pid,
|
||||||
DATA_BLOB *data)
|
DATA_BLOB *data)
|
||||||
{
|
{
|
||||||
char *src_string = procid_str(NULL, &pid);
|
char *src_string = server_id_str(NULL, &pid);
|
||||||
printf("PONG from pid %s\n", src_string);
|
printf("PONG from pid %s\n", src_string);
|
||||||
TALLOC_FREE(src_string);
|
TALLOC_FREE(src_string);
|
||||||
num_replies++;
|
num_replies++;
|
||||||
@ -1143,7 +1143,7 @@ static void winbind_validate_cache_cb(struct messaging_context *msg,
|
|||||||
struct server_id pid,
|
struct server_id pid,
|
||||||
DATA_BLOB *data)
|
DATA_BLOB *data)
|
||||||
{
|
{
|
||||||
char *src_string = procid_str(NULL, &pid);
|
char *src_string = server_id_str(NULL, &pid);
|
||||||
printf("Winbindd cache is %svalid. (answer from pid %s)\n",
|
printf("Winbindd cache is %svalid. (answer from pid %s)\n",
|
||||||
(*(data->data) == 0 ? "" : "NOT "), src_string);
|
(*(data->data) == 0 ? "" : "NOT "), src_string);
|
||||||
TALLOC_FREE(src_string);
|
TALLOC_FREE(src_string);
|
||||||
|
@ -56,17 +56,6 @@ struct server_id cluster_id(uint64_t pid, uint32_t task_id)
|
|||||||
return ops->cluster_id(ops, pid, task_id);
|
return ops->cluster_id(ops, pid, task_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
return a server_id as a string
|
|
||||||
*/
|
|
||||||
char *cluster_id_string(TALLOC_CTX *mem_ctx, struct server_id id)
|
|
||||||
{
|
|
||||||
cluster_init();
|
|
||||||
return ops->cluster_id_string(ops, mem_ctx, id);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
open a temporary tdb in a cluster friendly manner
|
open a temporary tdb in a cluster friendly manner
|
||||||
*/
|
*/
|
||||||
|
@ -41,7 +41,6 @@ typedef void (*cluster_message_fn_t)(struct imessaging_context *, DATA_BLOB);
|
|||||||
|
|
||||||
/* prototypes */
|
/* prototypes */
|
||||||
struct server_id cluster_id(uint64_t id, uint32_t task_id);
|
struct server_id cluster_id(uint64_t id, uint32_t task_id);
|
||||||
char *cluster_id_string(TALLOC_CTX *mem_ctx, struct server_id id);
|
|
||||||
struct tdb_wrap *cluster_tdb_tmp_open(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx, const char *dbname, int flags);
|
struct tdb_wrap *cluster_tdb_tmp_open(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx, const char *dbname, int flags);
|
||||||
void *cluster_backend_handle(void);
|
void *cluster_backend_handle(void);
|
||||||
|
|
||||||
|
@ -24,8 +24,6 @@
|
|||||||
|
|
||||||
struct cluster_ops {
|
struct cluster_ops {
|
||||||
struct server_id (*cluster_id)(struct cluster_ops *ops, uint64_t id, uint32_t id2);
|
struct server_id (*cluster_id)(struct cluster_ops *ops, uint64_t id, uint32_t id2);
|
||||||
char *(*cluster_id_string)(struct cluster_ops *ops,
|
|
||||||
TALLOC_CTX *, struct server_id );
|
|
||||||
struct tdb_wrap *(*cluster_tdb_tmp_open)(struct cluster_ops *,
|
struct tdb_wrap *(*cluster_tdb_tmp_open)(struct cluster_ops *,
|
||||||
TALLOC_CTX *,
|
TALLOC_CTX *,
|
||||||
struct loadparm_context *,
|
struct loadparm_context *,
|
||||||
|
@ -41,16 +41,6 @@ static struct server_id local_id(struct cluster_ops *ops, uint64_t pid, uint32_t
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
return a server_id as a string
|
|
||||||
*/
|
|
||||||
static char *local_id_string(struct cluster_ops *ops,
|
|
||||||
TALLOC_CTX *mem_ctx, struct server_id id)
|
|
||||||
{
|
|
||||||
return talloc_asprintf(mem_ctx, "%u.%llu.%u", id.vnn, (unsigned long long)id.pid, id.task_id);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
open a tmp tdb for the local node. By using smbd_tmp_path() we don't need
|
open a tmp tdb for the local node. By using smbd_tmp_path() we don't need
|
||||||
TDB_CLEAR_IF_FIRST as the tmp path is wiped at startup
|
TDB_CLEAR_IF_FIRST as the tmp path is wiped at startup
|
||||||
@ -98,7 +88,6 @@ static NTSTATUS local_message_send(struct cluster_ops *ops,
|
|||||||
|
|
||||||
static struct cluster_ops cluster_local_ops = {
|
static struct cluster_ops cluster_local_ops = {
|
||||||
.cluster_id = local_id,
|
.cluster_id = local_id,
|
||||||
.cluster_id_string = local_id_string,
|
|
||||||
.cluster_tdb_tmp_open = local_tdb_tmp_open,
|
.cluster_tdb_tmp_open = local_tdb_tmp_open,
|
||||||
.backend_handle = local_backend_handle,
|
.backend_handle = local_backend_handle,
|
||||||
.message_init = local_message_init,
|
.message_init = local_message_init,
|
||||||
|
@ -109,7 +109,7 @@ static void irpc_handler(struct imessaging_context *, void *,
|
|||||||
static void ping_message(struct imessaging_context *msg, void *private_data,
|
static void ping_message(struct imessaging_context *msg, void *private_data,
|
||||||
uint32_t msg_type, struct server_id src, DATA_BLOB *data)
|
uint32_t msg_type, struct server_id src, DATA_BLOB *data)
|
||||||
{
|
{
|
||||||
char *task_id = cluster_id_string(NULL, src);
|
char *task_id = server_id_str(NULL, &src);
|
||||||
DEBUG(1,("INFO: Received PING message from server %s [%.*s]\n",
|
DEBUG(1,("INFO: Received PING message from server %s [%.*s]\n",
|
||||||
task_id, (int)data->length,
|
task_id, (int)data->length,
|
||||||
data->data?(const char *)data->data:""));
|
data->data?(const char *)data->data:""));
|
||||||
@ -134,7 +134,7 @@ static NTSTATUS irpc_uptime(struct irpc_message *msg,
|
|||||||
static char *imessaging_path(struct imessaging_context *msg, struct server_id server_id)
|
static char *imessaging_path(struct imessaging_context *msg, struct server_id server_id)
|
||||||
{
|
{
|
||||||
TALLOC_CTX *tmp_ctx = talloc_new(msg);
|
TALLOC_CTX *tmp_ctx = talloc_new(msg);
|
||||||
const char *id = cluster_id_string(tmp_ctx, server_id);
|
const char *id = server_id_str(tmp_ctx, &server_id);
|
||||||
char *s;
|
char *s;
|
||||||
if (id == NULL) {
|
if (id == NULL) {
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -284,8 +284,8 @@ static void imessaging_send_handler(struct imessaging_context *msg)
|
|||||||
if (!NT_STATUS_IS_OK(status)) {
|
if (!NT_STATUS_IS_OK(status)) {
|
||||||
TALLOC_CTX *tmp_ctx = talloc_new(msg);
|
TALLOC_CTX *tmp_ctx = talloc_new(msg);
|
||||||
DEBUG(1,("messaging: Lost message from %s to %s of type %u - %s\n",
|
DEBUG(1,("messaging: Lost message from %s to %s of type %u - %s\n",
|
||||||
cluster_id_string(tmp_ctx, rec->header->from),
|
server_id_str(tmp_ctx, &rec->header->from),
|
||||||
cluster_id_string(tmp_ctx, rec->header->to),
|
server_id_str(tmp_ctx, &rec->header->to),
|
||||||
rec->header->msg_type,
|
rec->header->msg_type,
|
||||||
nt_errstr(status)));
|
nt_errstr(status)));
|
||||||
talloc_free(tmp_ctx);
|
talloc_free(tmp_ctx);
|
||||||
|
@ -502,7 +502,7 @@ static void switch_message(int type, struct smbsrv_request *req)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
task_id = cluster_id_string(NULL, req->smb_conn->connection->server_id);
|
task_id = server_id_str(NULL, &req->smb_conn->connection->server_id);
|
||||||
DEBUG(5,("switch message %s (task_id %s)\n",
|
DEBUG(5,("switch message %s (task_id %s)\n",
|
||||||
smb_fn_name(type), task_id));
|
smb_fn_name(type), task_id));
|
||||||
talloc_free(task_id);
|
talloc_free(task_id);
|
||||||
|
@ -217,7 +217,7 @@ static void stream_new_connection(struct tevent_context *ev,
|
|||||||
stream_socket->ops->name,
|
stream_socket->ops->name,
|
||||||
tsocket_address_string(srv_conn->remote_address, tmp_ctx),
|
tsocket_address_string(srv_conn->remote_address, tmp_ctx),
|
||||||
tsocket_address_string(srv_conn->local_address, tmp_ctx),
|
tsocket_address_string(srv_conn->local_address, tmp_ctx),
|
||||||
cluster_id_string(tmp_ctx, server_id));
|
server_id_str(tmp_ctx, &server_id));
|
||||||
if (title) {
|
if (title) {
|
||||||
stream_connection_set_title(srv_conn, title);
|
stream_connection_set_title(srv_conn, title);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user