]>
git.proxmox.com Git - mirror_iproute2.git/blob - lib/dnet_ntop.c
4 #include <netinet/in.h>
8 static __inline__ u_int16_t
dn_ntohs(u_int16_t addr
)
16 return ((u_int16_t
)u
.byte
[0]) | (((u_int16_t
)u
.byte
[1]) << 8);
19 static __inline__
int do_digit(char *str
, u_int16_t
*addr
, u_int16_t scale
, size_t *pos
, size_t len
, int *started
)
21 u_int16_t tmp
= *addr
/ scale
;
26 if (((tmp
) > 0) || *started
|| (scale
== 1)) {
30 *addr
-= (tmp
* scale
);
37 static const char *dnet_ntop1(const struct dn_naddr
*dna
, char *str
, size_t len
)
43 memcpy(&addr
, dna
->a_addr
, sizeof(addr
));
44 addr
= dn_ntohs(addr
);
55 if (do_digit(str
+ pos
, &area
, 10, &pos
, len
, &started
))
58 if (do_digit(str
+ pos
, &area
, 1, &pos
, len
, &started
))
68 if (do_digit(str
+ pos
, &addr
, 1000, &pos
, len
, &started
))
71 if (do_digit(str
+ pos
, &addr
, 100, &pos
, len
, &started
))
74 if (do_digit(str
+ pos
, &addr
, 10, &pos
, len
, &started
))
77 if (do_digit(str
+ pos
, &addr
, 1, &pos
, len
, &started
))
89 const char *dnet_ntop(int af
, const void *addr
, char *str
, size_t len
)
94 return dnet_ntop1((struct dn_naddr
*)addr
, str
, len
);