Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Paul Warren
iftop
Commits
85eac861
Commit
85eac861
authored
Oct 03, 2011
by
pdw
Browse files
Reversed previous FreeBSD patch.
parent
120a1b2c
Changes
3
Hide whitespace changes
Inline
Side-by-side
TODO
View file @
85eac861
Things to do for iftop
Things to do for iftop
$Id$
$Id$
* Revert old FreeBSD patch, install new one
* Re-fix import order for Mac OS X
* Add configurable offset for DLT_RAW
* Add configurable offset for DLT_RAW
* IP types other than v4?
* IP types other than v4?
...
...
config/int_ghba_r.c
View file @
85eac861
...
@@ -6,7 +6,6 @@
...
@@ -6,7 +6,6 @@
static
const
char
rcsid
[]
=
"$Id$"
;
static
const
char
rcsid
[]
=
"$Id$"
;
#include <sys/socket.h>
#include <sys/types.h>
#include <sys/types.h>
#include <errno.h>
#include <errno.h>
...
...
resolver.c
View file @
85eac861
...
@@ -37,22 +37,6 @@ int tail;
...
@@ -37,22 +37,6 @@ int tail;
extern
options_t
options
;
extern
options_t
options
;
int
guess_af
(
struct
in6_addr
*
addr
)
{
/* If the upper three (network byte order) uint32-parts
* are null, then there ought to be an IPv4 address here.
* Any such IPv6 would have to be 'xxxx::'. Neglectable? */
uint32_t
*
probe
;
int
af
;
probe
=
(
uint32_t
*
)
addr
;
return
(
probe
[
1
]
||
probe
[
2
]
||
probe
[
3
])
?
AF_INET6
:
AF_INET
;
}
socklen_t
aflength
(
int
af
)
{
return
af
==
AF_INET6
?
sizeof
(
struct
in6_addr
)
:
sizeof
(
struct
in_addr
);
}
/*
/*
* We have a choice of resolver methods. Real computers have getnameinfo or
* We have a choice of resolver methods. Real computers have getnameinfo or
...
@@ -76,11 +60,18 @@ char *do_resolve(struct in6_addr *addr) {
...
@@ -76,11 +60,18 @@ char *do_resolve(struct in6_addr *addr) {
struct
sockaddr_in6
sin6
;
struct
sockaddr_in6
sin6
;
char
buf
[
NI_MAXHOST
];
/* 1025 */
char
buf
[
NI_MAXHOST
];
/* 1025 */
int
res
,
af
;
int
res
,
af
;
uint32_t
*
probe
;
memset
(
&
sin
,
'\0'
,
sizeof
(
sin
));
memset
(
&
sin
,
'\0'
,
sizeof
(
sin
));
memset
(
&
sin6
,
'\0'
,
sizeof
(
sin6
));
memset
(
&
sin6
,
'\0'
,
sizeof
(
sin6
));
switch
(
guess_af
(
addr
))
{
/* If the upper three (network byte order) uint32-parts
* are null, then there ought to be an IPv4 address here.
* Any such IPv6 would have to be 'xxxx::'. Neglectable? */
probe
=
(
uint32_t
*
)
addr
;
af
=
(
probe
[
1
]
||
probe
[
2
]
||
probe
[
3
])
?
AF_INET6
:
AF_INET
;
switch
(
af
)
{
case
AF_INET
:
case
AF_INET
:
sin
.
sin_family
=
af
;
sin
.
sin_family
=
af
;
sin
.
sin_port
=
0
;
sin
.
sin_port
=
0
;
...
@@ -115,29 +106,26 @@ char *do_resolve(struct in6_addr *addr) {
...
@@ -115,29 +106,26 @@ char *do_resolve(struct in6_addr *addr) {
* Some implementations of libc choose to implement gethostbyaddr_r as
* Some implementations of libc choose to implement gethostbyaddr_r as
* a non thread-safe wrapper to gethostbyaddr. An interesting choice...
* a non thread-safe wrapper to gethostbyaddr. An interesting choice...
*/
*/
char
*
do_resolve
(
struct
in
6
_addr
*
addr
)
{
char
*
do_resolve
(
struct
in_addr
*
addr
)
{
struct
hostent
hostbuf
,
*
hp
;
struct
hostent
hostbuf
,
*
hp
;
size_t
hstbuflen
=
1024
;
size_t
hstbuflen
=
1024
;
char
*
tmphstbuf
;
char
*
tmphstbuf
;
int
res
;
int
res
;
int
herr
;
int
herr
;
int
af
;
char
*
ret
=
NULL
;
char
*
ret
=
NULL
;
/* Allocate buffer, remember to free it to avoid memory leakage. */
/* Allocate buffer, remember to free it to avoid memory leakage. */
tmphstbuf
=
xmalloc
(
hstbuflen
);
tmphstbuf
=
xmalloc
(
hstbuflen
);
af
=
guess_af
(
addr
);
/* Some machines have gethostbyaddr_r returning an integer error code; on
/* Some machines have gethostbyaddr_r returning an integer error code; on
* others, it returns a struct hostent*. */
* others, it returns a struct hostent*. */
#ifdef GETHOSTBYADDR_R_RETURNS_INT
#ifdef GETHOSTBYADDR_R_RETURNS_INT
while
((
res
=
gethostbyaddr_r
((
char
*
)
addr
,
aflength
(
af
),
af
,
while
((
res
=
gethostbyaddr_r
((
char
*
)
addr
,
sizeof
(
struct
in_addr
),
AF_INET
,
&
hostbuf
,
tmphstbuf
,
hstbuflen
,
&
hostbuf
,
tmphstbuf
,
hstbuflen
,
&
hp
,
&
herr
))
==
ERANGE
)
&
hp
,
&
herr
))
==
ERANGE
)
#else
#else
/* ... also assume one fewer argument.... */
/* ... also assume one fewer argument.... */
while
((
hp
=
gethostbyaddr_r
((
char
*
)
addr
,
aflength
(
af
),
af
,
while
((
hp
=
gethostbyaddr_r
((
char
*
)
addr
,
sizeof
(
struct
in_addr
),
AF_INET
,
&
hostbuf
,
tmphstbuf
,
hstbuflen
,
&
herr
))
==
NULL
&
hostbuf
,
tmphstbuf
,
hstbuflen
,
&
herr
))
==
NULL
&&
errno
==
ERANGE
)
&&
errno
==
ERANGE
)
#endif
#endif
...
@@ -171,11 +159,9 @@ char *do_resolve(struct in6_addr *addr) {
...
@@ -171,11 +159,9 @@ char *do_resolve(struct in6_addr *addr) {
static
pthread_mutex_t
ghba_mtx
=
PTHREAD_MUTEX_INITIALIZER
;
static
pthread_mutex_t
ghba_mtx
=
PTHREAD_MUTEX_INITIALIZER
;
char
*
s
=
NULL
;
char
*
s
=
NULL
;
struct
hostent
*
he
;
struct
hostent
*
he
;
int
af
;
af
=
guess_af
(
addr
);
pthread_mutex_lock
(
&
ghba_mtx
);
pthread_mutex_lock
(
&
ghba_mtx
);
he
=
gethostbyaddr
((
char
*
)
addr
,
aflength
(
af
),
af
);
he
=
gethostbyaddr
((
char
*
)
addr
,
sizeof
*
addr
,
AF_INET
);
if
(
he
)
if
(
he
)
s
=
xstrdup
(
he
->
h_name
);
s
=
xstrdup
(
he
->
h_name
);
pthread_mutex_unlock
(
&
ghba_mtx
);
pthread_mutex_unlock
(
&
ghba_mtx
);
...
@@ -313,7 +299,7 @@ char *do_resolve(struct in6_addr * addr) {
...
@@ -313,7 +299,7 @@ char *do_resolve(struct in6_addr * addr) {
#elif defined(USE_FORKING_RESOLVER)
#elif defined(USE_FORKING_RESOLVER)
/**
/**
* Resolver which forks a process, then uses gethostby
addr
.
* Resolver which forks a process, then uses gethostby
name
.
*/
*/
#include <signal.h>
#include <signal.h>
...
...
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