_I0(gw) = 0xfe800000 | (i->index & 0x0000ffff);
#endif
- fill_in_sockaddr(&dst, net->n.prefix, 0);
- fill_in_sockaddr(&mask, ipa_mkmask(net->n.pxlen), 0);
- fill_in_sockaddr(&gate, gw, 0);
+ fill_in_sockaddr(&dst, net->n.prefix, NULL, 0);
+ fill_in_sockaddr(&mask, ipa_mkmask(net->n.pxlen), NULL, 0);
+ fill_in_sockaddr(&gate, gw, NULL, 0);
switch (a->dest)
{
return -1;
}
- fill_in_sockaddr(&gate, i->addr->ip, 0);
+ fill_in_sockaddr(&gate, i->addr->ip, NULL, 0);
msg.rtm.rtm_addrs |= RTA_GATEWAY;
}
break;
GETADDR(&mask, RTA_NETMASK);
if (sa_family_check(&dst))
- get_sockaddr(&dst, &idst, NULL, 0);
+ get_sockaddr(&dst, &idst, NULL, NULL, 0);
else
SKIP("invalid DST");
/* We will check later whether we have valid gateway addr */
if (sa_family_check(&gate))
- get_sockaddr(&gate, &igate, NULL, 0);
+ get_sockaddr(&gate, &igate, NULL, NULL, 0);
else
igate = IPA_NONE;
/* We do not test family for RTA_NETMASK, because BSD sends us
some strange values, but interpreting them as IPv4/IPv6 works */
- get_sockaddr(&mask, &imask, NULL, 0);
+ get_sockaddr(&mask, &imask, NULL, NULL, 0);
int c = ipa_classify_net(idst);
if ((c < 0) || !(c & IADDR_HOST) || ((c & IADDR_SCOPE_MASK) <= SCOPE_LINK))
if (!sa_family_check(&addr))
return;
- get_sockaddr(&addr, &iaddr, NULL, 0);
- get_sockaddr(&mask, &imask, NULL, 0);
- get_sockaddr(&brd, &ibrd, NULL, 0);
+ get_sockaddr(&addr, &iaddr, NULL, NULL, 0);
+ get_sockaddr(&mask, &imask, NULL, NULL, 0);
+ get_sockaddr(&brd, &ibrd, NULL, NULL, 0);
if ((masklen = ipa_mklen(imask)) < 0)
{
#ifdef IPV6
-static void
-fill_in_sockaddr(sockaddr *sa, ip_addr a, struct iface *ifa, unsigned port)
+void
+fill_in_sockaddr(struct sockaddr_in6 *sa, ip_addr a, struct iface *ifa, unsigned port)
{
memset(sa, 0, sizeof (struct sockaddr_in6));
sa->sin6_family = AF_INET6;
sa->sin6_scope_id = ifa->index;
}
-static void
+void
get_sockaddr(struct sockaddr_in6 *sa, ip_addr *a, struct iface **ifa, unsigned *port, int check)
{
if (check && sa->sin6_family != AF_INET6)
#else
-static void
-fill_in_sockaddr(sockaddr *sa, ip_addr a, struct iface *ifa, unsigned port)
+void
+fill_in_sockaddr(struct sockaddr_in *sa, ip_addr a, struct iface *ifa, unsigned port)
{
memset (sa, 0, sizeof (struct sockaddr_in));
sa->sin_family = AF_INET;
set_inaddr(&sa->sin_addr, a);
}
-static void
+void
get_sockaddr(struct sockaddr_in *sa, ip_addr *a, struct iface **ifa, unsigned *port, int check)
{
if (check && sa->sin_family != AF_INET)
#endif
struct birdsock;
+struct iface;
void io_init(void);
void io_loop(void);
-// void fill_in_sockaddr(sockaddr *sa, ip_addr a, struct iface *ifa, unsigned port);
-// void get_sockaddr(struct sockaddr_in6 *sa, ip_addr *a, struct iface **ifa, unsigned *port, int check);
+void fill_in_sockaddr(sockaddr *sa, ip_addr a, struct iface *ifa, unsigned port);
+void get_sockaddr(sockaddr *sa, ip_addr *a, struct iface **ifa, unsigned *port, int check);
void sk_open_unix(struct birdsock *s, char *name);
void *tracked_fopen(struct pool *, char *name, char *mode);
void test_old_bird(char *path);