1
0
mirror of https://gitlab.labs.nic.cz/labs/bird.git synced 2024-05-11 16:54:54 +00:00

IO: Minor changes in socket AF handing

AF can be specified implicitly by saddr or daddr, flags SKF_V4ONLY and
SKF_V6ONLY are to be removed.
This commit is contained in:
Ondrej Zajicek (work)
2016-05-17 15:21:49 +02:00
parent 5af7b59660
commit 08b3a24da5
10 changed files with 91 additions and 77 deletions

View File

@@ -981,10 +981,10 @@ bfd_start(struct proto *P)
add_tail(&bfd_proto_list, &p->bfd_node);
birdloop_enter(p->loop);
p->rx4_1 = bfd_open_rx_sk(p, 0, 4);
p->rx4_m = bfd_open_rx_sk(p, 1, 4);
p->rx6_1 = bfd_open_rx_sk(p, 0, 6);
p->rx6_m = bfd_open_rx_sk(p, 1, 6);
p->rx4_1 = bfd_open_rx_sk(p, 0, SK_IPV4);
p->rx4_m = bfd_open_rx_sk(p, 1, SK_IPV4);
p->rx6_1 = bfd_open_rx_sk(p, 0, SK_IPV6);
p->rx6_m = bfd_open_rx_sk(p, 1, SK_IPV6);
birdloop_leave(p->loop);
bfd_take_requests(p);

View File

@@ -186,10 +186,11 @@ bfd_err_hook(sock *sk, int err)
}
sock *
bfd_open_rx_sk(struct bfd_proto *p, int multihop, int inet_version)
bfd_open_rx_sk(struct bfd_proto *p, int multihop, int af)
{
sock *sk = sk_new(p->tpool);
sk->type = SK_UDP;
sk->subtype = af;
sk->sport = !multihop ? BFD_CONTROL_PORT : BFD_MULTI_CTL_PORT;
sk->data = p;
@@ -202,19 +203,6 @@ bfd_open_rx_sk(struct bfd_proto *p, int multihop, int inet_version)
sk->priority = sk_priority_control;
sk->flags = SKF_THREAD | SKF_LADDR_RX | (!multihop ? SKF_TTL_RX : 0);
switch (inet_version) {
case 4:
sk->fam = SK_FAM_IPV4;
sk->flags |= SKF_V4ONLY;
break;
case 6:
sk->fam = SK_FAM_IPV6;
sk->flags |= SKF_V6ONLY;
break;
default:
ASSERT(0);
}
if (sk_open(sk) < 0)
goto err;
@@ -246,14 +234,6 @@ bfd_open_tx_sk(struct bfd_proto *p, ip_addr local, struct iface *ifa)
sk->ttl = ifa ? 255 : -1;
sk->flags = SKF_THREAD | SKF_BIND | SKF_HIGH_PORT;
if (ipa_is_ip4(local)) {
sk->fam = SK_FAM_IPV4;
sk->flags |= SKF_V4ONLY;
} else {
sk->fam = SK_FAM_IPV6;
sk->flags |= SKF_V6ONLY;
}
if (sk_open(sk) < 0)
goto err;