Vitezslav Samel (5): revname.c: include revname.h to pull in declarations rvnamed.c: name_resolved(): rewrote to fix the IPv6 case rvnamed.c: don't use magic numbers rvnamed.c: addrstat(): rewrite to work with IPv6 addresses revname.c: use inet_ntop() instead of deprecated inet_ntoa()
src/revname.c | 7 ++++--- src/revname.h | 2 +- src/rvnamed.c | 54 ++++++++++++++++++++++++------------------------------ 3 files changed, 29 insertions(+), 34 deletions(-)
... and fix one wrong declaration in the revname.h file
Signed-off-by: Vitezslav Samel vitezslav@samel.cz --- src/revname.c | 1 + src/revname.h | 2 +- 2 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/src/revname.c b/src/revname.c index 83e2d8f..17a5c95 100644 --- a/src/revname.c +++ b/src/revname.c @@ -14,6 +14,7 @@ interim IP addresses in the meantime.
#include "deskman.h" #include "getpath.h" +#include "revname.h" #include "rvnamed.h"
char revname_socket[80]; diff --git a/src/revname.h b/src/revname.h index 0a2f2ea..63dceb1 100644 --- a/src/revname.h +++ b/src/revname.h @@ -8,7 +8,7 @@ revname.h - public declarations related to reverse name resolution ***/
int rvnamedactive(void); -int killrvnamed(void); +void killrvnamed(void); void open_rvn_socket(int *fd); void close_rvn_socket(int fd);
On Wed, Aug 01, 2012 at 04:04:08PM +0200, Vitezslav Samel wrote:
... and fix one wrong declaration in the revname.h file
Signed-off-by: Vitezslav Samel vitezslav@samel.cz
src/revname.c | 1 + src/revname.h | 2 +- 2 files changed, 2 insertions(+), 1 deletions(-)
Ping? Why wasn't this patch accepted?
Vita
diff --git a/src/revname.c b/src/revname.c index 83e2d8f..17a5c95 100644 --- a/src/revname.c +++ b/src/revname.c @@ -14,6 +14,7 @@ interim IP addresses in the meantime.
#include "deskman.h" #include "getpath.h" +#include "revname.h" #include "rvnamed.h"
char revname_socket[80]; diff --git a/src/revname.h b/src/revname.h index 0a2f2ea..63dceb1 100644 --- a/src/revname.h +++ b/src/revname.h @@ -8,7 +8,7 @@ revname.h - public declarations related to reverse name resolution ***/
int rvnamedactive(void); -int killrvnamed(void); +void killrvnamed(void); void open_rvn_socket(int *fd); void close_rvn_socket(int fd);
-- 1.7.8.4
Vitezslav Samel vitezslav@samel.cz writes:
On Wed, Aug 01, 2012 at 04:04:08PM +0200, Vitezslav Samel wrote:
... and fix one wrong declaration in the revname.h file
Signed-off-by: Vitezslav Samel vitezslav@samel.cz
src/revname.c | 1 + src/revname.h | 2 +- 2 files changed, 2 insertions(+), 1 deletions(-)
Ping? Why wasn't this patch accepted?
my mistake, I suppouse I overlooked it.
diff --git a/src/revname.c b/src/revname.c index 83e2d8f..17a5c95 100644 --- a/src/revname.c +++ b/src/revname.c @@ -14,6 +14,7 @@ interim IP addresses in the meantime.
#include "deskman.h" #include "getpath.h" +#include "revname.h" #include "rvnamed.h"
char revname_socket[80]; diff --git a/src/revname.h b/src/revname.h index 0a2f2ea..63dceb1 100644 --- a/src/revname.h +++ b/src/revname.h @@ -8,7 +8,7 @@ revname.h - public declarations related to reverse name resolution ***/
int rvnamedactive(void); -int killrvnamed(void); +void killrvnamed(void); void open_rvn_socket(int *fd); void close_rvn_socket(int fd);
-- 1.7.8.4
If the entry matches IPv6 address we would return this entry index even if the entry isn't resolved yet.
Signed-off-by: Vitezslav Samel vitezslav@samel.cz --- src/rvnamed.c | 25 +++++++++++-------------- 1 files changed, 11 insertions(+), 14 deletions(-)
diff --git a/src/rvnamed.c b/src/rvnamed.c index 0fe8ea7..e075761 100644 --- a/src/rvnamed.c +++ b/src/rvnamed.c @@ -122,21 +122,18 @@ static void process_rvn_packet(struct rvn *rvnpacket) static int name_resolved(struct rvn *rvnpacket, struct hosts *hostlist, unsigned int lastfree) { - unsigned int i = 0; - - while (i != lastfree) { - if (rvnpacket->saddr.s_addr != 0) { - if ((rvnpacket->saddr.s_addr == hostlist[i].addr) - && (hostlist[i].ready == RESOLVED)) - return i; - } else { - if (!memcmp - (rvnpacket->s6addr.s6_addr, hostlist[i].addr6, - sizeof(hostlist[i].addr6))) - return i; + for (unsigned int i = 0; i != lastfree; i++) + if (hostlist[i].ready == RESOLVED) { + if (rvnpacket->saddr.s_addr != 0) { + if (rvnpacket->saddr.s_addr == hostlist[i].addr) + return i; + } else { + if (!memcmp(rvnpacket->s6addr.s6_addr, + hostlist[i].addr6, + sizeof(hostlist[i].addr6))) + return i; + } } - i++; - }
return -1; }
Signed-off-by: Vitezslav Samel vitezslav@samel.cz --- src/rvnamed.c | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/rvnamed.c b/src/rvnamed.c index e075761..c81b4e7 100644 --- a/src/rvnamed.c +++ b/src/rvnamed.c @@ -102,8 +102,8 @@ static void process_rvn_packet(struct rvn *rvnpacket) inet_ntop(AF_INET6, &(rvnpacket->s6addr), rvnpacket->fqdn, sizeof(rvnpacket->fqdn)); } else { - memset(rvnpacket->fqdn, 0, 45); - strncpy(rvnpacket->fqdn, he->h_name, 44); + memset(rvnpacket->fqdn, 0, sizeof(rvnpacket->fqdn)); + strncpy(rvnpacket->fqdn, he->h_name, sizeof(rvnpacket->fqdn)-1); }
ccsa.sun_family = AF_UNIX; @@ -376,10 +376,10 @@ int main(void) lastfree); if (readyidx >= 0) { rvnpacket.type = RVN_REPLY; - memset(rvnpacket.fqdn, 0, 45); + memset(rvnpacket.fqdn, 0, sizeof(rvnpacket.fqdn)); strncpy(rvnpacket.fqdn, hostlist[readyidx].fqdn, - 44); + sizeof(rvnpacket.fqdn)-1); rvnpacket.ready = RESOLVED;
br = sendto(ifd, &rvnpacket, @@ -507,7 +507,7 @@ int main(void) } } rvnpacket.type = RVN_REPLY; - memset(rvnpacket.fqdn, 0, 45); + memset(rvnpacket.fqdn, 0, sizeof(rvnpacket.fqdn)); if (rvnpacket.saddr.s_addr != 0) strcpy(rvnpacket.fqdn, inet_ntoa
This function works only for IPv4 addresses; I've rewritten it to work also with IPv6 addresses.
Signed-off-by: Vitezslav Samel vitezslav@samel.cz --- src/rvnamed.c | 19 ++++++++----------- 1 files changed, 8 insertions(+), 11 deletions(-)
diff --git a/src/rvnamed.c b/src/rvnamed.c index c81b4e7..a0a4f5f 100644 --- a/src/rvnamed.c +++ b/src/rvnamed.c @@ -146,18 +146,15 @@ static int name_resolved(struct rvn *rvnpacket, struct hosts *hostlist, static int addrstat(struct rvn *rvnpacket, struct hosts *hostlist, unsigned int lastfree) { - unsigned int i = 0; - - while (i != lastfree) { - if (rvnpacket->saddr.s_addr == hostlist[i].addr) - break; - - i++; + for (unsigned int i = 0; i != lastfree; i++) { + if (rvnpacket->saddr.s_addr != 0) { + if (rvnpacket->saddr.s_addr == hostlist[i].addr) + return hostlist[i].ready; + } else if (!memcmp(&rvnpacket->s6addr.s6_addr, + &hostlist[i].addr6, + sizeof(hostlist[i].addr6))) + return hostlist[i].ready; } - - if (i != lastfree) - return hostlist[i].ready; - return NOTRESOLVED; }
Signed-off-by: Vitezslav Samel vitezslav@samel.cz --- src/revname.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/revname.c b/src/revname.c index 17a5c95..627b00d 100644 --- a/src/revname.c +++ b/src/revname.c @@ -189,7 +189,7 @@ int revname(int *lookup, struct in_addr *saddr, struct in6_addr *s6addr,
if (br < 0) { if (saddr->s_addr != 0) - strcpy(target, inet_ntoa(*saddr)); + inet_ntop(AF_INET, saddr, target, 44); else inet_ntop(AF_INET6, s6addr, target, 44); printipcerr(); @@ -210,7 +210,7 @@ int revname(int *lookup, struct in_addr *saddr, struct in6_addr *s6addr,
if (he == NULL) { if (saddr->s_addr != 0) - strcpy(target, inet_ntoa(*saddr)); + inet_ntop(AF_INET, saddr, target, 44); else inet_ntop(AF_INET6, s6addr, target, 44); } else { @@ -221,7 +221,7 @@ int revname(int *lookup, struct in_addr *saddr, struct in6_addr *s6addr, } } else { if (saddr->s_addr != 0 || s6addr == NULL) - strcpy(target, inet_ntoa(*saddr)); + inet_ntop(AF_INET, saddr, target, 44); else inet_ntop(AF_INET6, s6addr, target, 44);
iptraf-ng@lists.fedorahosted.org