]> git.ipfire.org Git - thirdparty/libnl.git/commitdiff
Add internal wait_for_ack() which only waits for ACK if !NL_NO_AUTO_ACK
authorThomas Graf <tgr@plip.localdomain>
Mon, 20 Oct 2008 11:12:13 +0000 (13:12 +0200)
committerThomas Graf <tgr@plip.localdomain>
Mon, 20 Oct 2008 11:12:13 +0000 (13:12 +0200)
This changeset ensures that internal code properly synchronizes to
ACKs if ACKs are enabled and otherwise return immediately.

13 files changed:
include/netlink-local.h
lib/netfilter/ct.c
lib/netfilter/log.c
lib/netfilter/queue.c
lib/netfilter/queue_msg.c
lib/route/addr.c
lib/route/class.c
lib/route/link.c
lib/route/neigh.c
lib/route/neightbl.c
lib/route/qdisc.c
lib/route/route.c
lib/route/rule.c

index 958ac23132689f500f8fbf8e896018f02f23b4d4..1fafb511cbe02776b3ff4011fd65542a3c629f46 100644 (file)
@@ -172,4 +172,12 @@ static inline char *nl_cache_name(struct nl_cache *cache)
                END_OF_MSGTYPES_LIST, \
        }
 
+static inline int wait_for_ack(struct nl_sock *sk)
+{
+       if (sk->s_flags & NL_NO_AUTO_ACK)
+               return 0;
+       else
+               return nl_wait_for_ack(sk);
+}
+
 #endif
index d4d5a0ca50f9e9c465b0b4827bc6050f73b2cad9..9d61b6cd84958aa656aa0a2103a8b9a328703158 100644 (file)
@@ -488,7 +488,7 @@ int nfnl_ct_add(struct nl_sock *sk, const struct nfnl_ct *ct, int flags)
        if (err < 0)
                return err;
 
-       return nl_wait_for_ack(sk);
+       return wait_for_ack(sk);
 }
 
 int nfnl_ct_build_delete_request(const struct nfnl_ct *ct, int flags,
@@ -510,7 +510,7 @@ int nfnl_ct_del(struct nl_sock *sk, const struct nfnl_ct *ct, int flags)
        if (err < 0)
                return err;
 
-       return nl_wait_for_ack(sk);
+       return wait_for_ack(sk);
 }
 
 int nfnl_ct_build_query_request(const struct nfnl_ct *ct, int flags,
@@ -532,7 +532,7 @@ int nfnl_ct_query(struct nl_sock *sk, const struct nfnl_ct *ct, int flags)
        if (err < 0)
                return err;
 
-       return nl_wait_for_ack(sk);
+       return wait_for_ack(sk);
 }
 
 /**
index 6d3e23ac82f355484c42f0d5c7db450c04cf85cc..96ae6c51ee8cfc7800319376b20d0d17cb820e8c 100644 (file)
@@ -63,7 +63,7 @@ static int send_log_request(struct nl_sock *sk, struct nl_msg *msg)
        if (err < 0)
                return err;
 
-       return nl_wait_for_ack(sk);
+       return wait_for_ack(sk);
 }
 
 int nfnl_log_build_pf_bind(uint8_t pf, struct nl_msg **result)
index 3af2a48a37acfd170e8e6843eb42eca904ff1b29..8d3c7ce9765de42b9c1811fb4921a6ed1d4f3328 100644 (file)
@@ -33,7 +33,7 @@ static int send_queue_request(struct nl_sock *sk, struct nl_msg *msg)
        if (err < 0)
                return err;
 
-       return nl_wait_for_ack(sk);
+       return wait_for_ack(sk);
 }
 
 /**
index 68f25f26621acf81a0a10140e6e0e04ed38c9e9e..af50fa099229a9aacb4444e8e40ea463fd1c688e 100644 (file)
@@ -203,7 +203,7 @@ int nfnl_queue_msg_send_verdict(struct nl_sock *nlh,
        nlmsg_free(nlmsg);
        if (err < 0)
                return err;
-       return nl_wait_for_ack(nlh);
+       return wait_for_ack(nlh);
 }
 
 #define NFNLMSG_QUEUE_TYPE(type) NFNLMSG_TYPE(NFNL_SUBSYS_QUEUE, (type))
index 33bdace4ee019e4886b39d91d77607fb3d1a861f..fa9d0f41af4e4fd0698d61b682296ed6ee6ffab1 100644 (file)
@@ -586,7 +586,7 @@ int rtnl_addr_add(struct nl_sock *sk, struct rtnl_addr *addr, int flags)
        if (err < 0)
                return err;
 
-       return nl_wait_for_ack(sk);
+       return wait_for_ack(sk);
 }
 
 /** @} */
@@ -658,7 +658,7 @@ int rtnl_addr_delete(struct nl_sock *sk, struct rtnl_addr *addr, int flags)
        if (err < 0)
                return err;
 
-       return nl_wait_for_ack(sk);
+       return wait_for_ack(sk);
 }
 
 /** @} */
index 1110565eb5b8ea1d387a0e1fe2687a00dd6a12ad..2bfd7dd837f3dcb6468fe823935b15784ef37044 100644 (file)
@@ -154,7 +154,7 @@ int rtnl_class_add(struct nl_sock *sk, struct rtnl_class *class, int flags)
        if (err < 0)
                return err;
 
-       return nl_wait_for_ack(sk);
+       return wait_for_ack(sk);
 }
 
 /** @} */
index d2ae81622dd79baf928f995862b61fc52097be36..cf488e5a01f1273f54470497eb66409d33b1befa 100644 (file)
@@ -956,7 +956,7 @@ int rtnl_link_change(struct nl_sock *sk, struct rtnl_link *old,
        if (err < 0)
                return err;
 
-       return nl_wait_for_ack(sk);
+       return wait_for_ack(sk);
 }
 
 /** @} */
index 39ff2ea8919d915a11e3065245e4cdd08a07b2be..6998fac670a5966264ec5ca2666b2e31fda6f75e 100644 (file)
@@ -589,7 +589,7 @@ int rtnl_neigh_add(struct nl_sock *sk, struct rtnl_neigh *tmpl, int flags)
        if (err < 0)
                return err;
 
-       return nl_wait_for_ack(sk);
+       return wait_for_ack(sk);
 }
 
 /** @} */
@@ -645,7 +645,7 @@ int rtnl_neigh_delete(struct nl_sock *sk, struct rtnl_neigh *neigh,
        if (err < 0)
                return err;
 
-       return nl_wait_for_ack(sk);
+       return wait_for_ack(sk);
 }
 
 /** @} */
index b1f57b581a8fdea3817894f377302dae5504dbd9..9599faaed36e64d3b96f29af1f7453c8e49cb3c9 100644 (file)
@@ -576,7 +576,7 @@ int rtnl_neightbl_change(struct nl_sock *sk, struct rtnl_neightbl *old,
        if (err < 0)
                return err;
 
-       return nl_wait_for_ack(sk);
+       return wait_for_ack(sk);
 }
 
 /** @} */
index fe5a597f1299ca8387418e3e8f680cf135e908a2..cfeaf050d0b4c50bdc6b1222f2836695c81602c3 100644 (file)
@@ -233,7 +233,7 @@ int rtnl_qdisc_add(struct nl_sock *sk, struct rtnl_qdisc *qdisc,
        if (err < 0)
                return err;
 
-       return nl_wait_for_ack(sk);
+       return wait_for_ack(sk);
 }
 
 /** @} */
@@ -289,7 +289,7 @@ int rtnl_qdisc_change(struct nl_sock *sk, struct rtnl_qdisc *qdisc,
        if (err < 0)
                return err;
 
-       return nl_wait_for_ack(sk);
+       return wait_for_ack(sk);
 }
 
 /** @} */
@@ -362,7 +362,7 @@ int rtnl_qdisc_delete(struct nl_sock *sk, struct rtnl_qdisc *qdisc)
        if (err < 0)
                return err;
 
-       return nl_wait_for_ack(sk);
+       return wait_for_ack(sk);
 }
 
 /** @} */
index 613440fe4b454d55e9a7b6aaf03c06651eba8a79..c85c2258adb37f0862351ab1c65f94073046da0e 100644 (file)
@@ -138,7 +138,7 @@ int rtnl_route_add(struct nl_sock *sk, struct rtnl_route *route, int flags)
        if (err < 0)
                return err;
 
-       return nl_wait_for_ack(sk);
+       return wait_for_ack(sk);
 }
 
 int rtnl_route_build_del_request(struct rtnl_route *tmpl, int flags,
@@ -160,7 +160,7 @@ int rtnl_route_delete(struct nl_sock *sk, struct rtnl_route *route, int flags)
        if (err < 0)
                return err;
 
-       return nl_wait_for_ack(sk);
+       return wait_for_ack(sk);
 }
 
 /** @} */
index 1f9ff9fb3d88077b30410f07207f8026bdf6c564..126e96d2adee4c9098290c2cb132bc9f5734c8eb 100644 (file)
@@ -490,7 +490,7 @@ int rtnl_rule_add(struct nl_sock *sk, struct rtnl_rule *tmpl, int flags)
        if (err < 0)
                return err;
 
-       return nl_wait_for_ack(sk);
+       return wait_for_ack(sk);
 }
 
 /** @} */
@@ -544,7 +544,7 @@ int rtnl_rule_delete(struct nl_sock *sk, struct rtnl_rule *rule, int flags)
        if (err < 0)
                return err;
 
-       return nl_wait_for_ack(sk);
+       return wait_for_ack(sk);
 }
 
 /** @} */