summaryrefslogtreecommitdiff
path: root/source3/smbd/utmp.c
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2003-04-24 09:52:29 +0000
committerAndrew Bartlett <abartlet@samba.org>2003-04-24 09:52:29 +0000
commit596de71fc60b622d7a9d5e12baf234db0bf22499 (patch)
tree3b7ad2e4a2fce6bc1ffc9142716477ccdaa35802 /source3/smbd/utmp.c
parent29133d967761908a0f1492c1b907350a076f4a01 (diff)
downloadsamba-596de71fc60b622d7a9d5e12baf234db0bf22499.tar.gz
samba-596de71fc60b622d7a9d5e12baf234db0bf22499.tar.bz2
samba-596de71fc60b622d7a9d5e12baf234db0bf22499.zip
When possible, store the IP address of the connecting client, not just the
hostname. This makes 'last -i' show the IP. Thanks to Philip Anderson <pza@australia.op.org> for the idea. Andrew Bartlett (This used to be commit 107731c080da1e3e4e13e966f8b79bfd2692a952)
Diffstat (limited to 'source3/smbd/utmp.c')
-rw-r--r--source3/smbd/utmp.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/source3/smbd/utmp.c b/source3/smbd/utmp.c
index 6c12cfac62..84ec364654 100644
--- a/source3/smbd/utmp.c
+++ b/source3/smbd/utmp.c
@@ -484,6 +484,7 @@ static int ut_id_encode(int i, char *fourbyte)
*/
static BOOL sys_utmp_fill(struct utmp *u,
const char *username, const char *hostname,
+ struct in_addr *ipaddr,
const char *id_str, int id_num)
{
struct timeval timeval;
@@ -538,8 +539,9 @@ static BOOL sys_utmp_fill(struct utmp *u,
#if defined(HAVE_UT_UT_HOST)
utmp_strcpy(u->ut_host, hostname, sizeof(u->ut_host));
#endif
-
#if defined(HAVE_UT_UT_ADDR)
+ if (ipaddr)
+ u->ut_addr = ipaddr->s_addr;
/*
* "(unsigned long) ut_addr" apparently exists on at least HP-UX 10.20.
* Volunteer to implement, please ...
@@ -561,6 +563,7 @@ static BOOL sys_utmp_fill(struct utmp *u,
****************************************************************************/
void sys_utmp_yield(const char *username, const char *hostname,
+ struct in_addr *ipaddr,
const char *id_str, int id_num)
{
struct utmp u;
@@ -576,7 +579,7 @@ void sys_utmp_yield(const char *username, const char *hostname,
u.ut_type = DEAD_PROCESS;
#endif
- if (!sys_utmp_fill(&u, username, hostname, id_str, id_num)) return;
+ if (!sys_utmp_fill(&u, username, hostname, ipaddr, id_str, id_num)) return;
sys_utmp_update(&u, NULL, False);
}
@@ -586,6 +589,7 @@ void sys_utmp_yield(const char *username, const char *hostname,
****************************************************************************/
void sys_utmp_claim(const char *username, const char *hostname,
+ struct in_addr *ipaddr,
const char *id_str, int id_num)
{
struct utmp u;
@@ -596,7 +600,7 @@ void sys_utmp_claim(const char *username, const char *hostname,
u.ut_type = USER_PROCESS;
#endif
- if (!sys_utmp_fill(&u, username, hostname, id_str, id_num)) return;
+ if (!sys_utmp_fill(&u, username, hostname, ipaddr, id_str, id_num)) return;
sys_utmp_update(&u, hostname, True);
}