|
@@ -82,32 +82,6 @@ int rtnl_trylock(void)
|
|
|
return mutex_trylock(&rtnl_mutex);
|
|
|
}
|
|
|
|
|
|
-int rtattr_parse(struct rtattr *tb[], int maxattr, struct rtattr *rta, int len)
|
|
|
-{
|
|
|
- memset(tb, 0, sizeof(struct rtattr*)*maxattr);
|
|
|
-
|
|
|
- while (RTA_OK(rta, len)) {
|
|
|
- unsigned flavor = rta->rta_type;
|
|
|
- if (flavor && flavor <= maxattr)
|
|
|
- tb[flavor-1] = rta;
|
|
|
- rta = RTA_NEXT(rta, len);
|
|
|
- }
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
-int __rtattr_parse_nested_compat(struct rtattr *tb[], int maxattr,
|
|
|
- struct rtattr *rta, int len)
|
|
|
-{
|
|
|
- if (RTA_PAYLOAD(rta) < len)
|
|
|
- return -1;
|
|
|
- if (RTA_PAYLOAD(rta) >= RTA_ALIGN(len) + sizeof(struct rtattr)) {
|
|
|
- rta = RTA_DATA(rta) + RTA_ALIGN(len);
|
|
|
- return rtattr_parse_nested(tb, maxattr, rta);
|
|
|
- }
|
|
|
- memset(tb, 0, sizeof(struct rtattr *) * maxattr);
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
static struct rtnl_link *rtnl_msg_handlers[NPROTO];
|
|
|
|
|
|
static inline int rtm_msgindex(int msgtype)
|
|
@@ -442,21 +416,6 @@ void __rta_fill(struct sk_buff *skb, int attrtype, int attrlen, const void *data
|
|
|
memset(RTA_DATA(rta) + attrlen, 0, RTA_ALIGN(size) - size);
|
|
|
}
|
|
|
|
|
|
-size_t rtattr_strlcpy(char *dest, const struct rtattr *rta, size_t size)
|
|
|
-{
|
|
|
- size_t ret = RTA_PAYLOAD(rta);
|
|
|
- char *src = RTA_DATA(rta);
|
|
|
-
|
|
|
- if (ret > 0 && src[ret - 1] == '\0')
|
|
|
- ret--;
|
|
|
- if (size > 0) {
|
|
|
- size_t len = (ret >= size) ? size - 1 : ret;
|
|
|
- memset(dest, 0, size);
|
|
|
- memcpy(dest, src, len);
|
|
|
- }
|
|
|
- return ret;
|
|
|
-}
|
|
|
-
|
|
|
int rtnetlink_send(struct sk_buff *skb, struct net *net, u32 pid, unsigned group, int echo)
|
|
|
{
|
|
|
struct sock *rtnl = net->rtnl;
|
|
@@ -1411,9 +1370,6 @@ void __init rtnetlink_init(void)
|
|
|
}
|
|
|
|
|
|
EXPORT_SYMBOL(__rta_fill);
|
|
|
-EXPORT_SYMBOL(rtattr_strlcpy);
|
|
|
-EXPORT_SYMBOL(rtattr_parse);
|
|
|
-EXPORT_SYMBOL(__rtattr_parse_nested_compat);
|
|
|
EXPORT_SYMBOL(rtnetlink_put_metrics);
|
|
|
EXPORT_SYMBOL(rtnl_lock);
|
|
|
EXPORT_SYMBOL(rtnl_trylock);
|