summaryrefslogtreecommitdiffstats
path: root/lib/route
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2022-03-14 22:58:52 (GMT)
committerThomas Haller <thaller@redhat.com>2022-03-14 23:06:48 (GMT)
commitd78a6eb73e3d3e4e3e35aa3e6d3e5cacc8265644 (patch)
treedeff95f8ebf0098b3a7e929cc729394305bf9277 /lib/route
parent57a6d510b6d2dc23ad63c1e16ab89a00ccc902f3 (diff)
downloadlibnl-d78a6eb73e3d3e4e3e35aa3e6d3e5cacc8265644.zip
libnl-d78a6eb73e3d3e4e3e35aa3e6d3e5cacc8265644.tar.gz
libnl-d78a6eb73e3d3e4e3e35aa3e6d3e5cacc8265644.tar.bz2
route/mdb: minor cleanup in "mdb.c"
Diffstat (limited to 'lib/route')
-rw-r--r--lib/route/mdb.c65
1 files changed, 31 insertions, 34 deletions
diff --git a/lib/route/mdb.c b/lib/route/mdb.c
index fb39d20..3949bc4 100644
--- a/lib/route/mdb.c
+++ b/lib/route/mdb.c
@@ -113,6 +113,7 @@ static int mdb_clone(struct nl_object *_dst, struct nl_object *_src)
nl_init_list_head(&dst->mdb_entry_list);
nl_list_for_each_entry(entry, &src->mdb_entry_list, mdb_list) {
struct rtnl_mdb_entry *copy = mdb_entry_clone(entry);
+
if (!copy)
return -NLE_NOMEM;
@@ -127,8 +128,8 @@ static int mdb_update(struct nl_object *old_obj, struct nl_object *new_obj)
struct rtnl_mdb *old = (struct rtnl_mdb *) old_obj;
struct rtnl_mdb *new = (struct rtnl_mdb *) new_obj;
struct rtnl_mdb_entry *entry, *old_entry;
-
int action = new_obj->ce_msgtype;
+
if (new->ifindex != old->ifindex)
return -NLE_OPNOTSUPP;
@@ -136,6 +137,7 @@ static int mdb_update(struct nl_object *old_obj, struct nl_object *new_obj)
case RTM_NEWMDB:
nl_list_for_each_entry(entry, &new->mdb_entry_list, mdb_list) {
struct rtnl_mdb_entry *copy = mdb_entry_clone(entry);
+
if (!copy)
return -NLE_NOMEM;
@@ -143,12 +145,11 @@ static int mdb_update(struct nl_object *old_obj, struct nl_object *new_obj)
}
break;
case RTM_DELMDB:
- entry =
- nl_list_first_entry(&new->mdb_entry_list,
- struct rtnl_mdb_entry, mdb_list);
- nl_list_for_each_entry(old_entry, &old->mdb_entry_list,
- mdb_list) {
- if (old_entry->ifindex == entry->ifindex
+ entry = nl_list_first_entry(&new->mdb_entry_list,
+ struct rtnl_mdb_entry,
+ mdb_list);
+ nl_list_for_each_entry(old_entry, &old->mdb_entry_list, mdb_list) {
+ if ( old_entry->ifindex == entry->ifindex
&& !nl_addr_cmp(old_entry->addr, entry->addr)) {
nl_list_del(&old_entry->mdb_list);
break;
@@ -183,7 +184,7 @@ static int mdb_msg_parser(struct nl_cache_ops *ops, struct sockaddr_nl *who,
return -NLE_NOMEM;
err = nlmsg_parse(nlh, sizeof(struct br_port_msg), tb, MDBA_MAX,
- mdb_policy);
+ mdb_policy);
if (err < 0)
goto errout;
@@ -195,19 +196,20 @@ static int mdb_msg_parser(struct nl_cache_ops *ops, struct sockaddr_nl *who,
if (tb[MDBA_MDB]) {
struct nlattr *db_attr[MDBA_MDB_MAX];
+
nla_parse_nested(db_attr, MDBA_MDB_MAX, tb[MDBA_MDB],
- mdb_db_policy);
+ mdb_db_policy);
rem = nla_len(tb[MDBA_MDB]);
for (nla = nla_data(tb[MDBA_MDB]); nla_ok(nla, rem);
nla = nla_next(nla, &rem)) {
-
int rm = nla_len(nla);
struct nlattr *nla2;
+
for (nla2 = nla_data(nla); nla_ok(nla2, rm);
nla2 = nla_next(nla2, &rm)) {
- struct rtnl_mdb_entry *entry =
- rtnl_mdb_entry_alloc();
+ struct rtnl_mdb_entry *entry = rtnl_mdb_entry_alloc();
+
if (!entry) {
goto errout;
}
@@ -225,19 +227,13 @@ static int mdb_msg_parser(struct nl_cache_ops *ops, struct sockaddr_nl *who,
entry->proto = ntohs(e->addr.proto);
if (entry->proto == ETH_P_IP) {
- entry->addr =
- nl_addr_build(AF_INET,
- (void *) &e->addr.u.
- ip4,
- sizeof(e->addr.u.
- ip4));
+ entry->addr = nl_addr_build(AF_INET,
+ &e->addr.u.ip4,
+ sizeof(e->addr.u.ip4));
} else if (entry->proto == ETH_P_IPV6) {
- entry->addr =
- nl_addr_build(AF_INET6,
- (void *) &e->addr.u.
- ip6,
- sizeof(e->addr.u.
- ip6));
+ entry->addr = nl_addr_build(AF_INET6,
+ &e->addr.u.ip6,
+ sizeof(e->addr.u.ip6));
}
if (!entry->addr)
goto errout;
@@ -260,7 +256,7 @@ static int mdb_request_update(struct nl_cache *cache, struct nl_sock *sk)
}
static void mdb_entry_dump_line(struct rtnl_mdb_entry *entry,
- struct nl_dump_params *p)
+ struct nl_dump_params *p)
{
char buf[INET6_ADDRSTRLEN];
@@ -348,10 +344,11 @@ void rtnl_mdb_add_entry(struct rtnl_mdb *mdb, struct rtnl_mdb_entry *entry)
}
void rtnl_mdb_foreach_entry(struct rtnl_mdb *mdb,
- void (*cb)(struct rtnl_mdb_entry *, void *),
- void *arg)
+ void (*cb)(struct rtnl_mdb_entry *, void *),
+ void *arg)
{
struct rtnl_mdb_entry *entry;
+
nl_list_for_each_entry(entry, &mdb->mdb_entry_list, mdb_list) {
cb(entry, arg);
}
@@ -389,8 +386,8 @@ static struct nl_object_ops mdb_obj_ops = {
.oo_size = sizeof(struct rtnl_mdb),
.oo_constructor = mdb_constructor,
.oo_dump = {
- [NL_DUMP_LINE] = mdb_dump_line,
- },
+ [NL_DUMP_LINE] = mdb_dump_line,
+ },
.oo_clone = mdb_clone,
.oo_compare = mdb_compare,
.oo_update = mdb_update,
@@ -425,11 +422,11 @@ static struct nl_cache_ops rtnl_mdb_ops = {
.co_name = "route/mdb",
.co_hdrsize = sizeof(struct br_port_msg),
.co_msgtypes = {
- {RTM_NEWMDB, NL_ACT_NEW, "new"},
- {RTM_DELMDB, NL_ACT_DEL, "del"},
- {RTM_GETMDB, NL_ACT_GET, "get"},
- END_OF_MSGTYPES_LIST,
- },
+ { RTM_NEWMDB, NL_ACT_NEW, "new"},
+ { RTM_DELMDB, NL_ACT_DEL, "del"},
+ { RTM_GETMDB, NL_ACT_GET, "get"},
+ END_OF_MSGTYPES_LIST,
+ },
.co_protocol = NETLINK_ROUTE,
.co_groups = mdb_groups,
.co_request_update = mdb_request_update,