net: Convert network connection to use sockaddr
As the net_conn needs port information, use struct sockaddr internally as it has the port numbers built in. Change-Id: Idb1c87afa956dfe55dc8d533d867fa7845545b12 Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
This commit is contained in:
parent
b055a05ae8
commit
1932d4c3ec
4 changed files with 121 additions and 79 deletions
|
@ -370,13 +370,14 @@ int net_conn_unregister(void *handle)
|
|||
#if NET_DEBUG
|
||||
static inline
|
||||
void prepare_register_debug_print(char *dst, char *src,
|
||||
const struct net_addr *remote_addr,
|
||||
const struct net_addr *local_addr)
|
||||
const struct sockaddr *remote_addr,
|
||||
const struct sockaddr *local_addr)
|
||||
{
|
||||
if (remote_addr && remote_addr->family == AF_INET6) {
|
||||
#if defined(CONFIG_NET_IPV6)
|
||||
snprintf(dst, sizeof(dst),
|
||||
net_sprint_ipv6_addr(&remote_addr->in6_addr));
|
||||
net_sprint_ipv6_addr(&net_sin6(remote_addr)->
|
||||
sin6_addr));
|
||||
#else
|
||||
snprintf(dst, sizeof(dst), "?");
|
||||
#endif
|
||||
|
@ -384,7 +385,8 @@ void prepare_register_debug_print(char *dst, char *src,
|
|||
} else if (remote_addr && remote_addr->family == AF_INET) {
|
||||
#if defined(CONFIG_NET_IPV4)
|
||||
snprintf(dst, sizeof(dst),
|
||||
net_sprint_ipv4_addr(&remote_addr->in_addr));
|
||||
net_sprint_ipv4_addr(&net_sin(remote_addr)->
|
||||
sin_addr));
|
||||
#else
|
||||
snprintf(dst, sizeof(dst), "?");
|
||||
#endif
|
||||
|
@ -396,7 +398,8 @@ void prepare_register_debug_print(char *dst, char *src,
|
|||
if (local_addr && local_addr->family == AF_INET6) {
|
||||
#if defined(CONFIG_NET_IPV6)
|
||||
snprintf(src, sizeof(src),
|
||||
net_sprint_ipv6_addr(&local_addr->in6_addr));
|
||||
net_sprint_ipv6_addr(&net_sin6(local_addr)->
|
||||
sin6_addr));
|
||||
#else
|
||||
snprintf(src, sizeof(src), "?");
|
||||
#endif
|
||||
|
@ -404,7 +407,8 @@ void prepare_register_debug_print(char *dst, char *src,
|
|||
} else if (local_addr && local_addr->family == AF_INET) {
|
||||
#if defined(CONFIG_NET_IPV4)
|
||||
snprintf(src, sizeof(src),
|
||||
net_sprint_ipv4_addr(&local_addr->in_addr));
|
||||
net_sprint_ipv4_addr(&net_sin(local_addr)->
|
||||
sin_addr));
|
||||
#else
|
||||
snprintf(src, sizeof(src), "?");
|
||||
#endif
|
||||
|
@ -416,8 +420,8 @@ void prepare_register_debug_print(char *dst, char *src,
|
|||
#endif /* NET_DEBUG */
|
||||
|
||||
int net_conn_register(enum ip_protocol proto,
|
||||
const struct net_addr *remote_addr,
|
||||
const struct net_addr *local_addr,
|
||||
const struct sockaddr *remote_addr,
|
||||
const struct sockaddr *local_addr,
|
||||
uint16_t remote_port,
|
||||
uint16_t local_port,
|
||||
net_conn_cb_t cb,
|
||||
|
@ -442,12 +446,13 @@ int net_conn_register(enum ip_protocol proto,
|
|||
conns[i].flags |= NET_CONN_REMOTE_ADDR_SET;
|
||||
|
||||
memcpy(&conns[i].remote_addr, remote_addr,
|
||||
sizeof(struct net_addr));
|
||||
sizeof(struct sockaddr));
|
||||
|
||||
#if defined(CONFIG_NET_IPV6)
|
||||
if (remote_addr->family == AF_INET6) {
|
||||
if (net_is_ipv6_addr_unspecified(
|
||||
&remote_addr->in6_addr)) {
|
||||
&net_sin6(remote_addr)->
|
||||
sin6_addr)) {
|
||||
rank |= NET_RANK_REMOTE_UNSPEC_ADDR;
|
||||
} else {
|
||||
rank |= NET_RANK_REMOTE_SPEC_ADDR;
|
||||
|
@ -457,7 +462,8 @@ int net_conn_register(enum ip_protocol proto,
|
|||
|
||||
#if defined(CONFIG_NET_IPV4)
|
||||
if (remote_addr->family == AF_INET) {
|
||||
if (!remote_addr->in_addr.s_addr[0]) {
|
||||
if (!net_sin(remote_addr)->
|
||||
sin_addr.s_addr[0]) {
|
||||
rank |= NET_RANK_REMOTE_UNSPEC_ADDR;
|
||||
} else {
|
||||
rank |= NET_RANK_REMOTE_SPEC_ADDR;
|
||||
|
@ -476,12 +482,13 @@ int net_conn_register(enum ip_protocol proto,
|
|||
conns[i].flags |= NET_CONN_LOCAL_ADDR_SET;
|
||||
|
||||
memcpy(&conns[i].local_addr, local_addr,
|
||||
sizeof(struct net_addr));
|
||||
sizeof(struct sockaddr));
|
||||
|
||||
#if defined(CONFIG_NET_IPV6)
|
||||
if (local_addr->family == AF_INET6) {
|
||||
if (net_is_ipv6_addr_unspecified(
|
||||
&local_addr->in6_addr)) {
|
||||
&net_sin6(local_addr)->
|
||||
sin6_addr)) {
|
||||
rank |= NET_RANK_LOCAL_UNSPEC_ADDR;
|
||||
} else {
|
||||
rank |= NET_RANK_LOCAL_SPEC_ADDR;
|
||||
|
@ -491,7 +498,7 @@ int net_conn_register(enum ip_protocol proto,
|
|||
|
||||
#if defined(CONFIG_NET_IPV4)
|
||||
if (local_addr->family == AF_INET) {
|
||||
if (!local_addr->in_addr.s_addr[0]) {
|
||||
if (!net_sin(local_addr)->sin_addr.s_addr[0]) {
|
||||
rank |= NET_RANK_LOCAL_UNSPEC_ADDR;
|
||||
} else {
|
||||
rank |= NET_RANK_LOCAL_SPEC_ADDR;
|
||||
|
@ -509,15 +516,17 @@ int net_conn_register(enum ip_protocol proto,
|
|||
|
||||
if (remote_port) {
|
||||
rank |= NET_RANK_REMOTE_PORT;
|
||||
net_sin(&conns[i].remote_addr)->sin_port =
|
||||
htons(remote_port);
|
||||
}
|
||||
|
||||
if (local_port) {
|
||||
rank |= NET_RANK_LOCAL_PORT;
|
||||
net_sin(&conns[i].local_addr)->sin_port =
|
||||
htons(local_port);
|
||||
}
|
||||
|
||||
conns[i].flags |= NET_CONN_IN_USE;
|
||||
conns[i].remote_port = remote_port;
|
||||
conns[i].local_port = local_port;
|
||||
conns[i].cb = cb;
|
||||
conns[i].user_data = user_data;
|
||||
conns[i].rank = rank;
|
||||
|
@ -535,8 +544,9 @@ int net_conn_register(enum ip_protocol proto,
|
|||
remote_addr,
|
||||
local_addr);
|
||||
|
||||
NET_DBG("[%d/%u/0x%02x] remote %p/%s/%u local %p/%s/%u "
|
||||
"cb %p ud %p", i, proto, rank,
|
||||
NET_DBG("[%d/%d/%u/0x%02x] remote %p/%s/%u "
|
||||
"local %p/%s/%u cb %p ud %p",
|
||||
i, remote_addr->family, proto, rank,
|
||||
remote_addr, dst, remote_port,
|
||||
local_addr, src, local_port,
|
||||
cb, user_data);
|
||||
|
@ -553,7 +563,8 @@ int net_conn_register(enum ip_protocol proto,
|
|||
return -ENOENT;
|
||||
}
|
||||
|
||||
static bool check_addr(struct net_buf *buf, struct net_addr *addr,
|
||||
static bool check_addr(struct net_buf *buf,
|
||||
struct sockaddr *addr,
|
||||
bool is_remote)
|
||||
{
|
||||
if (addr->family != net_nbuf_family(buf)) {
|
||||
|
@ -570,8 +581,10 @@ static bool check_addr(struct net_buf *buf, struct net_addr *addr,
|
|||
addr6 = &NET_IPV6_BUF(buf)->dst;
|
||||
}
|
||||
|
||||
if (!net_is_ipv6_addr_unspecified(&addr->in6_addr)) {
|
||||
if (!net_ipv6_addr_cmp(&addr->in6_addr, addr6)) {
|
||||
if (!net_is_ipv6_addr_unspecified(
|
||||
&net_sin6(addr)->sin6_addr)) {
|
||||
if (!net_ipv6_addr_cmp(&net_sin6(addr)->sin6_addr,
|
||||
addr6)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -590,8 +603,9 @@ static bool check_addr(struct net_buf *buf, struct net_addr *addr,
|
|||
addr4 = &NET_IPV4_BUF(buf)->dst;
|
||||
}
|
||||
|
||||
if (addr->in_addr.s_addr[0]) {
|
||||
if (!net_ipv4_addr_cmp(&addr->in_addr, addr4)) {
|
||||
if (net_sin(addr)->sin_addr.s_addr[0]) {
|
||||
if (!net_ipv4_addr_cmp(&net_sin(addr)->sin_addr,
|
||||
addr4)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -649,16 +663,16 @@ enum net_verdict net_conn_input(enum ip_protocol proto, struct net_buf *buf)
|
|||
continue;
|
||||
}
|
||||
|
||||
if (conns[i].remote_port) {
|
||||
if (conns[i].remote_port !=
|
||||
ntohs(NET_CONN_BUF(buf)->src_port)) {
|
||||
if (net_sin(&conns[i].remote_addr)->sin_port) {
|
||||
if (net_sin(&conns[i].remote_addr)->sin_port !=
|
||||
NET_CONN_BUF(buf)->src_port) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (conns[i].local_port) {
|
||||
if (conns[i].local_port !=
|
||||
ntohs(NET_CONN_BUF(buf)->dst_port)) {
|
||||
if (net_sin(&conns[i].local_addr)->sin_port) {
|
||||
if (net_sin(&conns[i].local_addr)->sin_port !=
|
||||
NET_CONN_BUF(buf)->dst_port) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
@ -701,7 +715,7 @@ enum net_verdict net_conn_input(enum ip_protocol proto, struct net_buf *buf)
|
|||
conns[best_match].rank);
|
||||
#endif /* CONFIG_NET_CONN_CACHE */
|
||||
|
||||
if (conns[best_match].cb(buf,
|
||||
if (conns[best_match].cb(&conns[best_match], buf,
|
||||
conns[best_match].user_data) == NET_DROP) {
|
||||
goto drop;
|
||||
}
|
||||
|
|
|
@ -35,6 +35,8 @@
|
|||
extern "C" {
|
||||
#endif
|
||||
|
||||
struct net_conn;
|
||||
|
||||
/**
|
||||
* @brief Function that is called by connection subsystem when UDP/TCP
|
||||
* packet is received and which matches local and remote IP address
|
||||
|
@ -51,16 +53,10 @@ typedef enum net_verdict (*net_conn_cb_t)(struct net_buf *buf,
|
|||
*/
|
||||
struct net_conn {
|
||||
/** Remote IP address */
|
||||
struct net_addr remote_addr;
|
||||
struct sockaddr remote_addr;
|
||||
|
||||
/** Local IP address */
|
||||
struct net_addr local_addr;
|
||||
|
||||
/** Remote port */
|
||||
uint16_t remote_port;
|
||||
|
||||
/** Local port */
|
||||
uint16_t local_port;
|
||||
struct sockaddr local_addr;
|
||||
|
||||
/** Callback to be called when matching UDP packet is received */
|
||||
net_conn_cb_t cb;
|
||||
|
@ -103,8 +99,8 @@ struct net_conn {
|
|||
* @return Return 0 if the registration succeed, <0 otherwise.
|
||||
*/
|
||||
int net_conn_register(enum ip_protocol proto,
|
||||
const struct net_addr *remote_addr,
|
||||
const struct net_addr *local_addr,
|
||||
const struct sockaddr *remote_addr,
|
||||
const struct sockaddr *local_addr,
|
||||
uint16_t remote_port,
|
||||
uint16_t local_port,
|
||||
net_conn_cb_t cb,
|
||||
|
|
|
@ -49,8 +49,8 @@ extern "C" {
|
|||
*
|
||||
* @return Return 0 if the registration succeed, <0 otherwise.
|
||||
*/
|
||||
static inline int net_udp_register(const struct net_addr *remote_addr,
|
||||
const struct net_addr *local_addr,
|
||||
static inline int net_udp_register(const struct sockaddr *remote_addr,
|
||||
const struct sockaddr *local_addr,
|
||||
uint16_t remote_port,
|
||||
uint16_t local_port,
|
||||
net_conn_cb_t cb,
|
||||
|
|
|
@ -131,8 +131,8 @@ NET_DEVICE_INIT(net_udp_test, "net_udp_test",
|
|||
&net_udp_if_api, _ETH_L2_LAYER, 127);
|
||||
|
||||
struct ud {
|
||||
const struct net_addr *remote_addr;
|
||||
const struct net_addr *local_addr;
|
||||
const struct sockaddr *remote_addr;
|
||||
const struct sockaddr *local_addr;
|
||||
uint16_t remote_port;
|
||||
uint16_t local_port;
|
||||
char *test;
|
||||
|
@ -329,6 +329,31 @@ static bool send_ipv4_udp_msg(struct net_if *iface,
|
|||
return !fail;
|
||||
}
|
||||
|
||||
static void set_port(sa_family_t family, struct sockaddr *raddr,
|
||||
struct sockaddr *laddr, uint16_t rport,
|
||||
uint16_t lport)
|
||||
{
|
||||
if (family == AF_INET6) {
|
||||
if (raddr) {
|
||||
((struct sockaddr_in6 *)raddr)->
|
||||
sin6_port = htons(rport);
|
||||
}
|
||||
if (laddr) {
|
||||
((struct sockaddr_in6 *)laddr)->
|
||||
sin6_port = htons(lport);
|
||||
}
|
||||
} else if (family == AF_INET) {
|
||||
if (raddr) {
|
||||
((struct sockaddr_in *)raddr)->
|
||||
sin_port = htons(rport);
|
||||
}
|
||||
if (laddr) {
|
||||
((struct sockaddr_in *)laddr)->
|
||||
sin_port = htons(lport);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void main_fiber(void)
|
||||
{
|
||||
void *handlers[CONFIG_NET_MAX_CONN];
|
||||
|
@ -338,43 +363,43 @@ void main_fiber(void)
|
|||
int ret, i = 0;
|
||||
bool st;
|
||||
|
||||
struct net_addr any_addr6;
|
||||
struct sockaddr_in6 any_addr6;
|
||||
const struct in6_addr in6addr_any = IN6ADDR_ANY_INIT;
|
||||
|
||||
struct net_addr my_addr6;
|
||||
struct sockaddr_in6 my_addr6;
|
||||
struct in6_addr in6addr_my = { { { 0x20, 0x01, 0x0d, 0xb8, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0x1 } } };
|
||||
|
||||
struct net_addr peer_addr6;
|
||||
struct sockaddr_in6 peer_addr6;
|
||||
struct in6_addr in6addr_peer = { { { 0x20, 0x01, 0x0d, 0xb8, 0, 0, 0, 0,
|
||||
0, 0, 0, 0x4e, 0x11, 0, 0, 0x2 } } };
|
||||
|
||||
struct net_addr any_addr4;
|
||||
struct sockaddr_in any_addr4;
|
||||
const struct in_addr in4addr_any = { { { 0 } } };
|
||||
|
||||
struct net_addr my_addr4;
|
||||
struct sockaddr_in my_addr4;
|
||||
struct in_addr in4addr_my = { { { 192, 0, 2, 1 } } };
|
||||
|
||||
struct net_addr peer_addr4;
|
||||
struct sockaddr_in peer_addr4;
|
||||
struct in_addr in4addr_peer = { { { 192, 0, 2, 9 } } };
|
||||
|
||||
net_ipaddr_copy(&any_addr6.in6_addr, &in6addr_any);
|
||||
any_addr6.family = AF_INET6;
|
||||
net_ipaddr_copy(&any_addr6.sin6_addr, &in6addr_any);
|
||||
any_addr6.sin6_family = AF_INET6;
|
||||
|
||||
net_ipaddr_copy(&my_addr6.in6_addr, &in6addr_my);
|
||||
my_addr6.family = AF_INET6;
|
||||
net_ipaddr_copy(&my_addr6.sin6_addr, &in6addr_my);
|
||||
my_addr6.sin6_family = AF_INET6;
|
||||
|
||||
net_ipaddr_copy(&peer_addr6.in6_addr, &in6addr_peer);
|
||||
peer_addr6.family = AF_INET6;
|
||||
net_ipaddr_copy(&peer_addr6.sin6_addr, &in6addr_peer);
|
||||
peer_addr6.sin6_family = AF_INET6;
|
||||
|
||||
net_ipaddr_copy(&any_addr4.in_addr, &in4addr_any);
|
||||
any_addr4.family = AF_INET;
|
||||
net_ipaddr_copy(&any_addr4.sin_addr, &in4addr_any);
|
||||
any_addr4.sin_family = AF_INET;
|
||||
|
||||
net_ipaddr_copy(&my_addr4.in_addr, &in4addr_my);
|
||||
my_addr4.family = AF_INET;
|
||||
net_ipaddr_copy(&my_addr4.sin_addr, &in4addr_my);
|
||||
my_addr4.sin_family = AF_INET;
|
||||
|
||||
net_ipaddr_copy(&peer_addr4.in_addr, &in4addr_peer);
|
||||
peer_addr4.family = AF_INET;
|
||||
net_ipaddr_copy(&peer_addr4.sin_addr, &in4addr_peer);
|
||||
peer_addr4.sin_family = AF_INET;
|
||||
|
||||
nano_sem_init(&recv_lock);
|
||||
|
||||
|
@ -392,17 +417,22 @@ void main_fiber(void)
|
|||
return;
|
||||
}
|
||||
|
||||
#define REGISTER(raddr, laddr, rport, lport) \
|
||||
#define REGISTER(family, raddr, laddr, rport, lport) \
|
||||
({ \
|
||||
static struct ud user_data; \
|
||||
\
|
||||
user_data.remote_addr = raddr; \
|
||||
user_data.local_addr = laddr; \
|
||||
user_data.remote_addr = (struct sockaddr *)raddr; \
|
||||
user_data.local_addr = (struct sockaddr *)laddr; \
|
||||
user_data.remote_port = rport; \
|
||||
user_data.local_port = lport; \
|
||||
user_data.test = #raddr"-"#laddr"-"#rport"-"#lport; \
|
||||
\
|
||||
ret = net_udp_register(raddr, laddr, rport, lport, \
|
||||
set_port(family, (struct sockaddr *)raddr, \
|
||||
(struct sockaddr *)laddr, rport, lport); \
|
||||
\
|
||||
ret = net_udp_register((struct sockaddr *)raddr, \
|
||||
(struct sockaddr *)laddr, \
|
||||
rport, lport, \
|
||||
test_ok, &user_data, \
|
||||
&handlers[i]); \
|
||||
if (ret) { \
|
||||
|
@ -415,8 +445,10 @@ void main_fiber(void)
|
|||
})
|
||||
|
||||
#define REGISTER_FAIL(raddr, laddr, rport, lport) \
|
||||
ret = net_udp_register(raddr, laddr, rport, lport, test_fail, \
|
||||
INT_TO_POINTER(0), NULL); \
|
||||
ret = net_udp_register((struct sockaddr *)raddr, \
|
||||
(struct sockaddr *)laddr, \
|
||||
rport, lport, \
|
||||
test_fail, INT_TO_POINTER(0), NULL); \
|
||||
if (!ret) { \
|
||||
printk("UDP register invalid match %s failed\n", \
|
||||
#raddr"-"#laddr"-"#rport"-"#lport); \
|
||||
|
@ -467,47 +499,47 @@ void main_fiber(void)
|
|||
return; \
|
||||
}
|
||||
|
||||
ud = REGISTER(&any_addr6, &any_addr6, 1234, 4242);
|
||||
ud = REGISTER(AF_INET6, &any_addr6, &any_addr6, 1234, 4242);
|
||||
TEST_IPV6_OK(ud, &in6addr_peer, &in6addr_my, 1234, 4242);
|
||||
TEST_IPV6_OK(ud, &in6addr_peer, &in6addr_my, 1234, 4242);
|
||||
TEST_IPV6_FAIL(ud, &in6addr_peer, &in6addr_my, 1234, 61400);
|
||||
TEST_IPV6_FAIL(ud, &in6addr_peer, &in6addr_my, 1234, 61400);
|
||||
UNREGISTER(ud);
|
||||
|
||||
ud = REGISTER(&any_addr4, &any_addr4, 1234, 4242);
|
||||
ud = REGISTER(AF_INET, &any_addr4, &any_addr4, 1234, 4242);
|
||||
TEST_IPV4_OK(ud, &in4addr_peer, &in4addr_my, 1234, 4242);
|
||||
TEST_IPV4_OK(ud, &in4addr_peer, &in4addr_my, 1234, 4242);
|
||||
TEST_IPV4_FAIL(ud, &in4addr_peer, &in4addr_my, 1234, 4325);
|
||||
TEST_IPV4_FAIL(ud, &in4addr_peer, &in4addr_my, 1234, 4325);
|
||||
UNREGISTER(ud);
|
||||
|
||||
ud = REGISTER(&any_addr6, NULL, 1234, 4242);
|
||||
ud = REGISTER(AF_INET6, &any_addr6, NULL, 1234, 4242);
|
||||
TEST_IPV6_OK(ud, &in6addr_peer, &in6addr_my, 1234, 4242);
|
||||
TEST_IPV6_OK(ud, &in6addr_peer, &in6addr_my, 1234, 4242);
|
||||
TEST_IPV6_FAIL(ud, &in6addr_peer, &in6addr_my, 1234, 61400);
|
||||
TEST_IPV6_FAIL(ud, &in6addr_peer, &in6addr_my, 1234, 61400);
|
||||
UNREGISTER(ud);
|
||||
|
||||
ud = REGISTER(NULL, &any_addr6, 1234, 4242);
|
||||
ud = REGISTER(AF_INET6, NULL, &any_addr6, 1234, 4242);
|
||||
TEST_IPV6_OK(ud, &in6addr_peer, &in6addr_my, 1234, 4242);
|
||||
TEST_IPV6_OK(ud, &in6addr_peer, &in6addr_my, 1234, 4242);
|
||||
TEST_IPV6_FAIL(ud, &in6addr_peer, &in6addr_my, 1234, 61400);
|
||||
TEST_IPV6_FAIL(ud, &in6addr_peer, &in6addr_my, 1234, 61400);
|
||||
UNREGISTER(ud);
|
||||
|
||||
ud = REGISTER(&peer_addr6, &my_addr6, 1234, 4242);
|
||||
ud = REGISTER(AF_INET6, &peer_addr6, &my_addr6, 1234, 4242);
|
||||
TEST_IPV6_OK(ud, &in6addr_peer, &in6addr_my, 1234, 4242);
|
||||
TEST_IPV6_FAIL(ud, &in6addr_peer, &in6addr_my, 1234, 4243);
|
||||
|
||||
ud = REGISTER(&peer_addr4, &my_addr4, 1234, 4242);
|
||||
ud = REGISTER(AF_INET, &peer_addr4, &my_addr4, 1234, 4242);
|
||||
TEST_IPV4_OK(ud, &in4addr_peer, &in4addr_my, 1234, 4242);
|
||||
TEST_IPV4_FAIL(ud, &in4addr_peer, &in4addr_my, 1234, 4243);
|
||||
|
||||
ud = REGISTER(NULL, NULL, 1234, 42423);
|
||||
ud = REGISTER(AF_UNSPEC, NULL, NULL, 1234, 42423);
|
||||
TEST_IPV4_OK(ud, &in4addr_peer, &in4addr_my, 1234, 42423);
|
||||
TEST_IPV6_OK(ud, &in6addr_peer, &in6addr_my, 1234, 42423);
|
||||
|
||||
ud = REGISTER(NULL, NULL, 1234, 0);
|
||||
ud = REGISTER(AF_UNSPEC, NULL, NULL, 1234, 0);
|
||||
TEST_IPV4_OK(ud, &in4addr_peer, &in4addr_my, 1234, 42422);
|
||||
TEST_IPV6_OK(ud, &in6addr_peer, &in6addr_my, 1234, 42422);
|
||||
TEST_IPV4_OK(ud, &in4addr_peer, &in4addr_my, 1234, 42422);
|
||||
|
@ -516,13 +548,13 @@ void main_fiber(void)
|
|||
TEST_IPV4_FAIL(ud, &in4addr_peer, &in4addr_my, 12345, 42421);
|
||||
TEST_IPV6_FAIL(ud, &in6addr_peer, &in6addr_my, 12345, 42421);
|
||||
|
||||
ud = REGISTER(NULL, NULL, 0, 0);
|
||||
ud = REGISTER(AF_UNSPEC, NULL, NULL, 0, 0);
|
||||
TEST_IPV4_OK(ud, &in4addr_peer, &in4addr_my, 12345, 42421);
|
||||
TEST_IPV6_OK(ud, &in6addr_peer, &in6addr_my, 12345, 42421);
|
||||
|
||||
/* Remote addr same as local addr, these two will never match */
|
||||
REGISTER(&my_addr6, NULL, 1234, 4242);
|
||||
REGISTER(&my_addr4, NULL, 1234, 4242);
|
||||
REGISTER(AF_INET6, &my_addr6, NULL, 1234, 4242);
|
||||
REGISTER(AF_INET, &my_addr4, NULL, 1234, 4242);
|
||||
|
||||
/* IPv4 remote addr and IPv6 remote addr, impossible combination */
|
||||
REGISTER_FAIL(&my_addr4, &my_addr6, 1234, 4242);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue