Add internal wait_for_ack() which only waits for ACK if !NL_NO_AUTO_ACK
This changeset ensures that internal code properly synchronizes to ACKs if ACKs are enabled and otherwise return immediately.
This commit is contained in:
parent
2bdee95a76
commit
cfcfca0703
13 changed files with 28 additions and 20 deletions
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
/** @} */
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
/** @} */
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
/** @} */
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
/** @} */
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
/** @} */
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
/** @} */
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
/** @} */
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
/** @} */
|
||||
|
|
Loading…
Add table
Reference in a new issue