treewide: Avoid in_addr_t
IPv4 addresses can be stored in an in_addr_t or a struct in_addr. The former is just a type alias to a 32-bit integer, so doesn't really give us any type checking. Therefore we generally prefer the structure, since we mostly want to treat IP address as opaque objects. Fix a few places where we still use in_addr_t, but can just as easily use struct in_addr. Note there are still some uses of in_addr_t in conf.c, but those are justified: since they're doing prefix calculations, they actually need to look at the internals of the address as an integer. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
This commit is contained in:
parent
24d1f6570b
commit
5cada56186
2 changed files with 3 additions and 3 deletions
4
udp.c
4
udp.c
|
@ -866,8 +866,8 @@ int udp_tap_handler(struct ctx *c, uint8_t pif,
|
||||||
debug("UDP from tap src=%hu dst=%hu, s=%d",
|
debug("UDP from tap src=%hu dst=%hu, s=%d",
|
||||||
src, dst, udp_tap_map[V4][src].sock);
|
src, dst, udp_tap_map[V4][src].sock);
|
||||||
if ((s = udp_tap_map[V4][src].sock) < 0) {
|
if ((s = udp_tap_map[V4][src].sock) < 0) {
|
||||||
|
struct in_addr bind_addr = IN4ADDR_ANY_INIT;
|
||||||
union udp_epoll_ref uref = { .port = src };
|
union udp_epoll_ref uref = { .port = src };
|
||||||
in_addr_t bind_addr = { 0 };
|
|
||||||
const char *bind_if = NULL;
|
const char *bind_if = NULL;
|
||||||
|
|
||||||
if (!IN6_IS_ADDR_LOOPBACK(&s_in.sin_addr) &&
|
if (!IN6_IS_ADDR_LOOPBACK(&s_in.sin_addr) &&
|
||||||
|
@ -876,7 +876,7 @@ int udp_tap_handler(struct ctx *c, uint8_t pif,
|
||||||
|
|
||||||
if (!IN4_IS_ADDR_UNSPECIFIED(&c->ip4.addr_out) &&
|
if (!IN4_IS_ADDR_UNSPECIFIED(&c->ip4.addr_out) &&
|
||||||
!IN4_IS_ADDR_LOOPBACK(&s_in.sin_addr))
|
!IN4_IS_ADDR_LOOPBACK(&s_in.sin_addr))
|
||||||
bind_addr = c->ip4.addr_out.s_addr;
|
bind_addr = c->ip4.addr_out;
|
||||||
|
|
||||||
s = sock_l4(c, AF_INET, IPPROTO_UDP, &bind_addr,
|
s = sock_l4(c, AF_INET, IPPROTO_UDP, &bind_addr,
|
||||||
bind_if, src, uref.u32);
|
bind_if, src, uref.u32);
|
||||||
|
|
2
util.c
2
util.c
|
@ -161,7 +161,7 @@ int sock_l4(const struct ctx *c, int af, uint8_t proto,
|
||||||
|
|
||||||
if (af == AF_INET) {
|
if (af == AF_INET) {
|
||||||
if (bind_addr)
|
if (bind_addr)
|
||||||
addr4.sin_addr.s_addr = *(in_addr_t *)bind_addr;
|
addr4.sin_addr = *(struct in_addr *)bind_addr;
|
||||||
|
|
||||||
sa = (const struct sockaddr *)&addr4;
|
sa = (const struct sockaddr *)&addr4;
|
||||||
sl = sizeof(addr4);
|
sl = sizeof(addr4);
|
||||||
|
|
Loading…
Reference in a new issue