summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--networking/libiproute/libnetlink.c128
-rw-r--r--networking/libiproute/libnetlink.h4
-rw-r--r--networking/libiproute/rt_names.c81
-rw-r--r--networking/libiproute/rt_names.h3
4 files changed, 0 insertions, 216 deletions
diff --git a/networking/libiproute/libnetlink.c b/networking/libiproute/libnetlink.c
index efbb6f1..ad5bcd7 100644
--- a/networking/libiproute/libnetlink.c
+++ b/networking/libiproute/libnetlink.c
@@ -319,134 +319,6 @@ int rtnl_talk(struct rtnl_handle *rtnl, struct nlmsghdr *n, pid_t peer,
}
}
-int rtnl_listen(struct rtnl_handle *rtnl,
- int (*handler)(struct sockaddr_nl *,struct nlmsghdr *n, void *),
- void *jarg)
-{
- int status;
- struct nlmsghdr *h;
- struct sockaddr_nl nladdr;
- struct iovec iov;
- char buf[8192];
- struct msghdr msg = {
- (void*)&nladdr, sizeof(nladdr),
- &iov, 1,
- NULL, 0,
- 0
- };
-
- memset(&nladdr, 0, sizeof(nladdr));
- nladdr.nl_family = AF_NETLINK;
- nladdr.nl_pid = 0;
- nladdr.nl_groups = 0;
-
-
- iov.iov_base = buf;
-
- while (1) {
- iov.iov_len = sizeof(buf);
- status = recvmsg(rtnl->fd, &msg, 0);
-
- if (status < 0) {
- if (errno == EINTR)
- continue;
- bb_perror_msg("OVERRUN");
- continue;
- }
- if (status == 0) {
- bb_error_msg("EOF on netlink");
- return -1;
- }
- if (msg.msg_namelen != sizeof(nladdr)) {
- bb_error_msg_and_die("Sender address length == %d", msg.msg_namelen);
- }
- for (h = (struct nlmsghdr*)buf; status >= sizeof(*h); ) {
- int err;
- int len = h->nlmsg_len;
- int l = len - sizeof(*h);
-
- if (l<0 || len>status) {
- if (msg.msg_flags & MSG_TRUNC) {
- bb_error_msg("Truncated message");
- return -1;
- }
- bb_error_msg_and_die("!!!malformed message: len=%d", len);
- }
-
- err = handler(&nladdr, h, jarg);
- if (err < 0) {
- return err;
- }
-
- status -= NLMSG_ALIGN(len);
- h = (struct nlmsghdr*)((char*)h + NLMSG_ALIGN(len));
- }
- if (msg.msg_flags & MSG_TRUNC) {
- bb_error_msg("Message truncated");
- continue;
- }
- if (status) {
- bb_error_msg_and_die("!!!Remnant of size %d", status);
- }
- }
-}
-
-int rtnl_from_file(FILE *rtnl,
- int (*handler)(struct sockaddr_nl *,struct nlmsghdr *n, void *),
- void *jarg)
-{
- int status;
- struct sockaddr_nl nladdr;
- char buf[8192];
- struct nlmsghdr *h = (void*)buf;
-
- memset(&nladdr, 0, sizeof(nladdr));
- nladdr.nl_family = AF_NETLINK;
- nladdr.nl_pid = 0;
- nladdr.nl_groups = 0;
-
- while (1) {
- int err, len, type;
- int l;
-
- status = fread(&buf, 1, sizeof(*h), rtnl);
-
- if (status < 0) {
- if (errno == EINTR)
- continue;
- bb_perror_msg("rtnl_from_file: fread");
- return -1;
- }
- if (status == 0)
- return 0;
-
- len = h->nlmsg_len;
- type= h->nlmsg_type;
- l = len - sizeof(*h);
-
- if (l<0 || len>sizeof(buf)) {
- bb_error_msg("!!!malformed message: len=%d @%lu",
- len, ftell(rtnl));
- return -1;
- }
-
- status = fread(NLMSG_DATA(h), 1, NLMSG_ALIGN(l), rtnl);
-
- if (status < 0) {
- bb_perror_msg("rtnl_from_file: fread");
- return -1;
- }
- if (status < l) {
- bb_error_msg("rtnl-from_file: truncated message");
- return -1;
- }
-
- err = handler(&nladdr, h, jarg);
- if (err < 0)
- return err;
- }
-}
-
int addattr32(struct nlmsghdr *n, int maxlen, int type, __u32 data)
{
int len = RTA_LENGTH(4);
diff --git a/networking/libiproute/libnetlink.h b/networking/libiproute/libnetlink.h
index 45d3ad2..c8a8b78 100644
--- a/networking/libiproute/libnetlink.h
+++ b/networking/libiproute/libnetlink.h
@@ -37,10 +37,6 @@ extern int rta_addattr_l(struct rtattr *rta, int maxlen, int type, void *data, i
extern int parse_rtattr(struct rtattr *tb[], int max, struct rtattr *rta, int len);
-extern int rtnl_listen(struct rtnl_handle *, int (*handler)(struct sockaddr_nl *,struct nlmsghdr *n, void *),
- void *jarg);
-extern int rtnl_from_file(FILE *, int (*handler)(struct sockaddr_nl *,struct nlmsghdr *n, void *),
- void *jarg);
#endif /* __LIBNETLINK_H__ */
diff --git a/networking/libiproute/rt_names.c b/networking/libiproute/rt_names.c
index 5206c4b..9d47491 100644
--- a/networking/libiproute/rt_names.c
+++ b/networking/libiproute/rt_names.c
@@ -207,23 +207,6 @@ static void rtnl_rtrealm_initialize(void)
rtnl_rtrealm_tab, 256);
}
-const char * rtnl_rtrealm_n2a(int id, char *buf, int len)
-{
- if (id<0 || id>=256) {
- snprintf(buf, len, "%d", id);
- return buf;
- }
- if (!rtnl_rtrealm_tab[id]) {
- if (!rtnl_rtrealm_init)
- rtnl_rtrealm_initialize();
- }
- if (rtnl_rtrealm_tab[id])
- return rtnl_rtrealm_tab[id];
- snprintf(buf, len, "%d", id);
- return buf;
-}
-
-
int rtnl_rtrealm_a2n(uint32_t *id, char *arg)
{
static char *cache = NULL;
@@ -258,70 +241,6 @@ int rtnl_rtrealm_a2n(uint32_t *id, char *arg)
-static char * rtnl_rttable_tab[256] = {
- "unspec",
-};
-
-static int rtnl_rttable_init;
-
-static void rtnl_rttable_initialize(void)
-{
- rtnl_rttable_init = 1;
- rtnl_rttable_tab[255] = "local";
- rtnl_rttable_tab[254] = "main";
- rtnl_tab_initialize("/etc/iproute2/rt_tables",
- rtnl_rttable_tab, 256);
-}
-
-const char * rtnl_rttable_n2a(int id, char *buf, int len)
-{
- if (id<0 || id>=256) {
- snprintf(buf, len, "%d", id);
- return buf;
- }
- if (!rtnl_rttable_tab[id]) {
- if (!rtnl_rttable_init)
- rtnl_rttable_initialize();
- }
- if (rtnl_rttable_tab[id])
- return rtnl_rttable_tab[id];
- snprintf(buf, len, "%d", id);
- return buf;
-}
-
-int rtnl_rttable_a2n(uint32_t *id, char *arg)
-{
- static char *cache = NULL;
- static unsigned long res;
- char *end;
- int i;
-
- if (cache && strcmp(cache, arg) == 0) {
- *id = res;
- return 0;
- }
-
- if (!rtnl_rttable_init)
- rtnl_rttable_initialize();
-
- for (i=0; i<256; i++) {
- if (rtnl_rttable_tab[i] &&
- strcmp(rtnl_rttable_tab[i], arg) == 0) {
- cache = rtnl_rttable_tab[i];
- res = i;
- *id = res;
- return 0;
- }
- }
-
- i = strtoul(arg, &end, 0);
- if (!end || end == arg || *end || i > 255)
- return -1;
- *id = i;
- return 0;
-}
-
-
static char * rtnl_rtdsfield_tab[256] = {
"0",
};
diff --git a/networking/libiproute/rt_names.h b/networking/libiproute/rt_names.h
index ed090a1..deb5aa6 100644
--- a/networking/libiproute/rt_names.h
+++ b/networking/libiproute/rt_names.h
@@ -5,12 +5,9 @@
extern const char* rtnl_rtprot_n2a(int id, char *buf, int len);
extern const char* rtnl_rtscope_n2a(int id, char *buf, int len);
-extern const char* rtnl_rttable_n2a(int id, char *buf, int len);
-extern const char* rtnl_rtrealm_n2a(int id, char *buf, int len);
extern const char* rtnl_dsfield_n2a(int id, char *buf, int len);
extern int rtnl_rtprot_a2n(uint32_t *id, char *arg);
extern int rtnl_rtscope_a2n(uint32_t *id, char *arg);
-extern int rtnl_rttable_a2n(uint32_t *id, char *arg);
extern int rtnl_rtrealm_a2n(uint32_t *id, char *arg);
extern int rtnl_dsfield_a2n(uint32_t *id, char *arg);