diff --git a/main.c b/main.c index 7dab8dd..0c70d5f 100644 --- a/main.c +++ b/main.c @@ -42,14 +42,13 @@ void getutmp( int pid, char user[], char host_ip[], char host_ipv6[], time_t * t sprintf(host_ip, "%s", utmp->ut_host); //got ip of origin if((utmp->ut_addr_v6[1] && utmp->ut_addr_v6[2] && utmp->ut_addr_v6[3]) == 0) { - ipv4 = (utmp->ut_addr_v6[0] & 0x00000000ff000000) ; - ipv4 >>= 6; + ipv4 = (utmp->ut_addr_v6[0] & 0x00000000ff000000) >> 24; sprintf( str, "%x.", ipv4); strcat(host_ip, str); - ipv4 = (utmp->ut_addr_v6[0] & 0x0000000000ff0000) >> 4; + ipv4 = (utmp->ut_addr_v6[0] & 0x0000000000ff0000) >> 16; sprintf( str, "%x.", ipv4); strcat(host_ip, str); - ipv4 = (utmp->ut_addr_v6[0] & 0x000000000000ff00) >> 2; + ipv4 = (utmp->ut_addr_v6[0] & 0x000000000000ff00) >> 8; sprintf( str, "%x.", ipv4); strcat(host_ip, str); ipv4 = utmp->ut_addr_v6[0] & 0x00000000000000ff; @@ -61,7 +60,7 @@ void getutmp( int pid, char user[], char host_ip[], char host_ipv6[], time_t * t for (x=0;x<4;x++) { - ipv6_1 = (utmp->ut_addr_v6[x] & 0xffffffff00000000) >> 8; + ipv6_1 = (utmp->ut_addr_v6[x] & 0xffffffff00000000) >> 32; sprintf( str, "%x:", ipv6_1); strcat(host_ipv6, str); ipv6_2 = utmp->ut_addr_v6[x] & 0x00000000ffffffff;