Delete a connection record.
****************************************************************************/
-BOOL yield_connection(connection_struct *conn, const char *name)
+bool yield_connection(connection_struct *conn, const char *name)
{
struct db_record *rec;
NTSTATUS status;
pid_t mypid;
int curr_connections;
const char *name;
- BOOL Clear;
+ bool Clear;
};
/****************************************************************************
Claim an entry in the connections database.
****************************************************************************/
-int count_current_connections( const char *sharename, BOOL clear )
+int count_current_connections( const char *sharename, bool clear )
{
struct count_stat cs;
return cs.curr_connections;
}
+/****************************************************************************
+ Count the number of connections open across all shares.
+****************************************************************************/
+
+int count_all_current_connections(void)
+{
+ return count_current_connections(NULL, True /* clear stale entries */);
+}
+
/****************************************************************************
Claim an entry in the connections database.
****************************************************************************/
-BOOL claim_connection(connection_struct *conn, const char *name,
+bool claim_connection(connection_struct *conn, const char *name,
uint32 msg_flags)
{
struct db_record *rec;
struct connections_data crec;
TDB_DATA dbuf;
NTSTATUS status;
+ char addr[INET6_ADDRSTRLEN];
DEBUG(5,("claiming [%s]\n", name));
- if (!(rec = connections_fetch_entry(NULL, conn, name))) {
+ if (!(rec = connections_fetch_entry(talloc_tos(), conn, name))) {
DEBUG(0, ("connections_fetch_entry failed\n"));
return False;
}
crec.bcast_msg_flags = msg_flags;
strlcpy(crec.machine,get_remote_machine_name(),sizeof(crec.machine));
- strlcpy(crec.addr,conn?conn->client_address:client_addr(),
+ strlcpy(crec.addr,conn?conn->client_address:
+ client_addr(get_client_fd(),addr,sizeof(addr)),
sizeof(crec.addr));
dbuf.dptr = (uint8 *)&crec;
return True;
}
-BOOL register_message_flags(BOOL doreg, uint32 msg_flags)
+bool register_message_flags(bool doreg, uint32 msg_flags)
{
struct db_record *rec;
struct connections_data *pcrec;
/*********************************************************************
*********************************************************************/
-BOOL store_pipe_opendb( smb_np_struct *p )
+bool store_pipe_opendb( smb_np_struct *p )
{
struct db_record *dbrec;
struct pipe_open_rec *prec;
TDB_DATA *key;
TDB_DATA data;
- BOOL ret = False;
+ bool ret = False;
if ( (prec = TALLOC_P( NULL, struct pipe_open_rec)) == NULL ) {
DEBUG(0,("store_pipe_opendb: talloc failed!\n"));
/*********************************************************************
*********************************************************************/
-BOOL delete_pipe_opendb( smb_np_struct *p )
+bool delete_pipe_opendb( smb_np_struct *p )
{
struct db_record *dbrec;
struct pipe_open_rec *prec;
TDB_DATA *key;
- BOOL ret = False;
+ bool ret = False;
if ( (prec = TALLOC_P( NULL, struct pipe_open_rec)) == NULL ) {
DEBUG(0,("store_pipe_opendb: talloc failed!\n"));