group errors into logical errno sets
Subsystems (2)
Pablo Neira Ayuso
maintainerPATCH 1/4 group errors into logical errno sets
[PATCH] group errors into logical errno sets
This patch groups ctnetlink errors into three logical sets:
* Malformed messages: if ctnetlink receives a message without some mandatory attribute, then it returns EINVAL.
* Unsupported operations: if userspace tries to perform an unsupported operation, then it returns EOPNOTSUPP.
* Unchangeable: if userspace tries to change some attribute of the conntrack object that can only be set once, then it returns EBUSY.
This patch reduces the number of -EINVAL from 23 to 14 and it results in 5 -EBUSY and 6 -EOPNOTSUPP.
Signature · 1 line
"Los honestos son inadaptados sociales" -- Les Luthiers
[PATCH] group errors into logical errno sets
This patch groups ctnetlink errors into three logical sets:
* Malformed messages: if ctnetlink receives a message without some mandatory attribute, then it returns EINVAL.
* Unsupported operations: if userspace tries to perform an unsupported operation, then it returns EOPNOTSUPP.
* Unchangeable: if userspace tries to change some attribute of the conntrack object that can only be set once, then it returns EBUSY.
This patch reduces the number of -EINVAL from 23 to 14 and it results in 5 -EBUSY and 6 -EOPNOTSUPP.
net/netfilter/nf_conntrack_netlink.c +10 -11
@@ -4,7 +4,7 @@* (C) 2001 by Jay Schulist <[email protected]> * (C) 2002-2006 by Harald Welte <[email protected]> * (C) 2003 by Patrick Mchardy <[email protected]> -* (C) 2005-2007 by Pablo Neira Ayuso <[email protected]> +* (C) 2005-2008 by Pablo Neira Ayuso <[email protected]> * * Initial connection tracking via netlink development funded and * generally made possible by Network Robots, Inc. (www.networkrobots.com)
@@ -899,20 +899,19 @@ ctnetlink_change_status(struct nf_conn *if (d & (IPS_EXPECTED |IPS_CONFIRMED |IPS_DYING ))/* unchangeable */ -return -EINVAL ; +return -EBUSY ;if (d &IPS_SEEN_REPLY && !(status &IPS_SEEN_REPLY ))/* SEEN_REPLY bit can only be set */ -return -EINVAL ; - +return -EBUSY ;if (d &IPS_ASSURED && !(status &IPS_ASSURED ))/* ASSURED bit can only be set */ -return -EINVAL ; +return -EBUSY ;if (cda[CTA_NAT_SRC ] || cda[CTA_NAT_DST ]) {#ifndef CONFIG_NF_NAT_NEEDED -return -EINVAL ; +return -EOPNOTSUPP ;#else struct nf_nat_range range;
@@ -953,7 +952,7 @@ ctnetlink_change_helper(struct nf_conn */* don't change helper of sibling connections */ if (ct->master) -return -EINVAL ; +return -EBUSY ; err =ctnetlink_parse_help (cda[CTA_HELP ], &helpname);if (err <0 )
@@ -971,7 +970,7 @@ ctnetlink_change_helper(struct nf_conn * helper =__nf_conntrack_helper_find_byname (helpname);if (helper ==NULL ) -return -EINVAL ; +return -EOPNOTSUPP ;if (help) {if (help->helper == helper)
@@ -1269,12 +1268,12 @@ ctnetlink_new_conntrack(struct sock *ctnif (!(nlh->nlmsg_flags &NLM_F_EXCL )) {/* we only allow nat config for new conntracks */ if (cda[CTA_NAT_SRC ] || cda[CTA_NAT_DST ]) { - err = -EINVAL ; + err = -EOPNOTSUPP ; goto out_unlock; }/* can't link an existing conntrack to a master */ if (cda[CTA_TUPLE_MASTER ]) { - err = -EINVAL ; + err = -EOPNOTSUPP ; goto out_unlock; } err = ctnetlink_change_conntrack(nf_ct_tuplehash_to_ctrack(h),
@@ -1619,7 +1618,7 @@ ctnetlink_del_expect(struct sock *ctnl, h =__nf_conntrack_helper_find_byname (name);if (!h) {spin_unlock_bh (&nf_conntrack_lock); -return -EINVAL ; +return -EOPNOTSUPP ; }for (i =0 ; i < nf_ct_expect_hsize; i++) { hlist_for_each_entry_safe(exp, n, next,
Patrick McHardy
AppliedQuoted 1 line · Pablo Neira Ayuso
[PATCH] group errors into logical errno sets
Applied, thanks Pablo.