Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
N
net-tools
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
net-tools
Commits
fb9c5b0d
Commit
fb9c5b0d
authored
Aug 26, 2001
by
Andi Kleen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix netstat -- don't print all v4 addresses as v4-mapped-in-v6.
parent
fc474dcd
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
31 additions
and
9 deletions
+31
-9
lib/inet6.c
lib/inet6.c
+24
-5
lib/util.h
lib/util.h
+3
-0
netstat.c
netstat.c
+4
-4
No files found.
lib/inet6.c
View file @
fb9c5b0d
...
...
@@ -3,7 +3,7 @@
* support functions for the net-tools.
* (most of it copied from lib/inet.c 1.26).
*
* Version: $Id: inet6.c,v 1.1
0 2000/10/28 11:04:00 pb
Exp $
* Version: $Id: inet6.c,v 1.1
1 2001/08/26 05:25:21 ak
Exp $
*
* Author: Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
* Copyright 1993 MicroWalt Corporation
...
...
@@ -44,6 +44,21 @@
extern
int
h_errno
;
/* some netdb.h versions don't export this */
char
*
fix_v4_address
(
char
*
buf
,
struct
in6_addr
*
in6
)
{
if
(
IN6_IS_ADDR_V4MAPPED
(
in6
->
s6_addr
))
{
char
*
s
=
strchr
(
buf
,
'.'
);
if
(
s
)
{
while
(
s
>
buf
&&
*
s
!=
':'
)
--
s
;
if
(
*
s
==
':'
)
++
s
;
else
s
=
NULL
;
}
if
(
s
)
return
s
;
}
return
buf
;
}
static
int
INET6_resolve
(
char
*
name
,
struct
sockaddr_in6
*
sin6
)
{
struct
addrinfo
req
,
*
ai
;
...
...
@@ -83,7 +98,7 @@ static int INET6_rresolve(char *name, struct sockaddr_in6 *sin6, int numeric)
return
(
-
1
);
}
if
(
numeric
&
0x7FFF
)
{
inet_ntop
(
AF_INET6
,
&
sin6
->
sin6_addr
,
name
,
80
);
inet_ntop
(
AF_INET6
,
&
sin6
->
sin6_addr
,
name
,
80
);
return
(
0
);
}
if
(
IN6_IS_ADDR_UNSPECIFIED
(
&
sin6
->
sin6_addr
))
{
...
...
@@ -109,13 +124,14 @@ static void INET6_reserror(char *text)
}
/* Display an Internet socket address. */
static
char
*
INET6_print
(
unsigned
char
*
ptr
)
{
static
char
name
[
80
];
inet_ntop
(
AF_INET6
,
(
struct
in6_addr
*
)
ptr
,
name
,
80
);
return
name
;
return
fix_v4_address
(
name
,
(
struct
in6_addr
*
)
ptr
)
;
}
...
...
@@ -129,13 +145,14 @@ static char *INET6_sprint(struct sockaddr *sap, int numeric)
return
safe_strncpy
(
buff
,
_
(
"[NONE SET]"
),
sizeof
(
buff
));
if
(
INET6_rresolve
(
buff
,
(
struct
sockaddr_in6
*
)
sap
,
numeric
)
!=
0
)
return
safe_strncpy
(
buff
,
_
(
"[UNKNOWN]"
),
sizeof
(
buff
));
return
(
buff
);
return
(
fix_v4_address
(
buff
,
&
((
struct
sockaddr_in6
*
)
sap
)
->
sin6_addr
)
);
}
static
int
INET6_getsock
(
char
*
bufp
,
struct
sockaddr
*
sap
)
{
struct
sockaddr_in6
*
sin6
;
char
*
p
;
sin6
=
(
struct
sockaddr_in6
*
)
sap
;
sin6
->
sin6_family
=
AF_INET6
;
...
...
@@ -143,7 +160,9 @@ static int INET6_getsock(char *bufp, struct sockaddr *sap)
if
(
inet_pton
(
AF_INET6
,
bufp
,
sin6
->
sin6_addr
.
s6_addr
)
<=
0
)
return
(
-
1
);
p
=
fix_v4_address
(
bufp
,
&
sin6
->
sin6_addr
);
if
(
p
!=
bufp
)
memcpy
(
bufp
,
p
,
strlen
(
p
)
+
1
);
return
16
;
/* ?;) */
}
...
...
lib/util.h
View file @
fb9c5b0d
...
...
@@ -14,3 +14,6 @@ int nstrcmp(const char *, const char *);
char
*
safe_strncpy
(
char
*
dst
,
const
char
*
src
,
size_t
size
);
#define min(a,b) ((a)<(b) ? (a) : (b))
#define max(a,b) ((a)>(b) ? (a) : (b))
netstat.c
View file @
fb9c5b0d
...
...
@@ -6,7 +6,7 @@
* NET-3 Networking Distribution for the LINUX operating
* system.
*
* Version: $Id: netstat.c,v 1.4
3 2001/04/15 14:41:17 pb
Exp $
* Version: $Id: netstat.c,v 1.4
4 2001/08/26 05:25:21 ak
Exp $
*
* Authors: Fred Baumgarten, <dc6iq@insu1.etec.uni-karlsruhe.de>
* Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
...
...
@@ -813,8 +813,8 @@ static void tcp_do_one(int lnr, const char *line)
timer_run
,
(
double
)
time_len
/
HZ
,
retr
,
timeout
);
break
;
}
printf
(
"tcp %6ld %6ld %-
23s %-23
s %-12s"
,
rxq
,
txq
,
local_addr
,
rem_addr
,
_
(
tcp_state
[
state
]));
printf
(
"tcp %6ld %6ld %-
*s %-*
s %-12s"
,
rxq
,
txq
,
max
(
23
,
strlen
(
local_addr
)
+
1
),
local_addr
,
max
(
23
,
strlen
(
rem_addr
))
,
rem_addr
,
_
(
tcp_state
[
state
]));
finish_this_one
(
uid
,
inode
,
timers
);
}
...
...
@@ -1514,7 +1514,7 @@ int main
(
int
argc
,
char
*
argv
[])
{
int
i
;
int
lop
;
struct
option
longopts
[]
=
st
atic
st
ruct
option
longopts
[]
=
{
AFTRANS_OPTS
,
{
"version"
,
0
,
0
,
'V'
},
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment