diff options
author | Volker Lendecke <vlendec@samba.org> | 2007-05-08 13:44:36 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 12:21:55 -0500 |
commit | 4aa44f7475e03dcc596f6a13fffffda7268074a1 (patch) | |
tree | 2b0529c892a64a3c2283df64d6ea14433056d04a /source3/utils/net_status.c | |
parent | dcc2fe7cb61937aa191bf8b5f353d0308a8011a3 (diff) | |
download | samba-4aa44f7475e03dcc596f6a13fffffda7268074a1.tar.gz samba-4aa44f7475e03dcc596f6a13fffffda7268074a1.tar.bz2 samba-4aa44f7475e03dcc596f6a13fffffda7268074a1.zip |
r22761: This introduces lib/conn_tdb.c with two main functions: connections_traverse
and connections_forall. This centralizes all the routines that did individual
tdb_open("connections.tdb") and direct tdb_traverse.
Volker
(This used to be commit e43e94cda1ad8876b3cb5d1129080b57fa6ec214)
Diffstat (limited to 'source3/utils/net_status.c')
-rw-r--r-- | source3/utils/net_status.c | 72 |
1 files changed, 19 insertions, 53 deletions
diff --git a/source3/utils/net_status.c b/source3/utils/net_status.c index af6952389c..88c1789f71 100644 --- a/source3/utils/net_status.c +++ b/source3/utils/net_status.c @@ -84,27 +84,22 @@ static int net_status_sessions(int argc, const char **argv) return 0; } -static int show_share(TDB_CONTEXT *tdb, TDB_DATA kbuf, TDB_DATA dbuf, +static int show_share(TDB_CONTEXT *tdb, + const struct connections_key *key, + const struct connections_data *crec, void *state) { - struct connections_data crec; - - if (dbuf.dsize != sizeof(crec)) + if (crec->cnum == -1) return 0; - memcpy(&crec, dbuf.dptr, sizeof(crec)); - - if (crec.cnum == -1) - return 0; - - if (!process_exists(crec.pid)) { + if (!process_exists(crec->pid)) { return 0; } d_printf("%-10.10s %s %-12s %s", - crec.servicename, procid_str_static(&crec.pid), - crec.machine, - time_to_asc(crec.start)); + crec->servicename, procid_str_static(&crec->pid), + crec->machine, + time_to_asc(crec->start)); return 0; } @@ -139,41 +134,37 @@ static int collect_pid(TDB_CONTEXT *tdb, TDB_DATA kbuf, TDB_DATA dbuf, return 0; } -static int show_share_parseable(TDB_CONTEXT *tdb, TDB_DATA kbuf, TDB_DATA dbuf, +static int show_share_parseable(TDB_CONTEXT *tdb, + const struct connections_key *key, + const struct connections_data *crec, void *state) { struct sessionids *ids = (struct sessionids *)state; - struct connections_data crec; int i; BOOL guest = True; - if (dbuf.dsize != sizeof(crec)) - return 0; - - memcpy(&crec, dbuf.dptr, sizeof(crec)); - - if (crec.cnum == -1) + if (crec->cnum == -1) return 0; - if (!process_exists(crec.pid)) { + if (!process_exists(crec->pid)) { return 0; } for (i=0; i<ids->num_entries; i++) { struct server_id id = ids->entries[i].pid; - if (procid_equal(&id, &crec.pid)) { + if (procid_equal(&id, &crec->pid)) { guest = False; break; } } d_printf("%s\\%s\\%s\\%s\\%s\\%s\\%s", - crec.servicename,procid_str_static(&crec.pid), + crec->servicename,procid_str_static(&crec->pid), guest ? "" : uidtoname(ids->entries[i].uid), guest ? "" : gidtoname(ids->entries[i].gid), - crec.machine, + crec->machine, guest ? "" : ids->entries[i].hostname, - time_to_asc(crec.start)); + time_to_asc(crec->start)); return 0; } @@ -197,18 +188,7 @@ static int net_status_shares_parseable(int argc, const char **argv) tdb_traverse(tdb, collect_pid, &ids); tdb_close(tdb); - tdb = tdb_open_log(lock_path("connections.tdb"), 0, - TDB_DEFAULT, O_RDONLY, 0); - - if (tdb == NULL) { - d_fprintf(stderr, "%s not initialised\n", lock_path("connections.tdb")); - d_fprintf(stderr, "This is normal if no SMB client has ever " - "connected to your server.\n"); - return -1; - } - - tdb_traverse(tdb, show_share_parseable, &ids); - tdb_close(tdb); + connections_forall(show_share_parseable, &ids); SAFE_FREE(ids.entries); @@ -217,8 +197,6 @@ static int net_status_shares_parseable(int argc, const char **argv) static int net_status_shares(int argc, const char **argv) { - TDB_CONTEXT *tdb; - if (argc == 0) { d_printf("\nService pid machine " @@ -226,19 +204,7 @@ static int net_status_shares(int argc, const char **argv) d_printf("-------------------------------------" "------------------\n"); - tdb = tdb_open_log(lock_path("connections.tdb"), 0, - TDB_DEFAULT, O_RDONLY, 0); - - if (tdb == NULL) { - d_fprintf(stderr, "%s not initialised\n", - lock_path("connections.tdb")); - d_fprintf(stderr, "This is normal if no SMB client has " - "ever connected to your server.\n"); - return -1; - } - - tdb_traverse(tdb, show_share, NULL); - tdb_close(tdb); + connections_forall(show_share, NULL); return 0; } |