|
@@ -358,13 +358,13 @@ static int clusterip_tg_check(const struct xt_tgchk_param *par)
|
|
|
cipinfo->hash_mode != CLUSTERIP_HASHMODE_SIP_SPT &&
|
|
|
cipinfo->hash_mode != CLUSTERIP_HASHMODE_SIP_SPT_DPT) {
|
|
|
pr_info("unknown mode %u\n", cipinfo->hash_mode);
|
|
|
- return false;
|
|
|
+ return -EINVAL;
|
|
|
|
|
|
}
|
|
|
if (e->ip.dmsk.s_addr != htonl(0xffffffff) ||
|
|
|
e->ip.dst.s_addr == 0) {
|
|
|
pr_info("Please specify destination IP\n");
|
|
|
- return false;
|
|
|
+ return -EINVAL;
|
|
|
}
|
|
|
|
|
|
/* FIXME: further sanity checks */
|
|
@@ -374,20 +374,20 @@ static int clusterip_tg_check(const struct xt_tgchk_param *par)
|
|
|
if (!(cipinfo->flags & CLUSTERIP_FLAG_NEW)) {
|
|
|
pr_info("no config found for %pI4, need 'new'\n",
|
|
|
&e->ip.dst.s_addr);
|
|
|
- return false;
|
|
|
+ return -EINVAL;
|
|
|
} else {
|
|
|
struct net_device *dev;
|
|
|
|
|
|
if (e->ip.iniface[0] == '\0') {
|
|
|
pr_info("Please specify an interface name\n");
|
|
|
- return false;
|
|
|
+ return -EINVAL;
|
|
|
}
|
|
|
|
|
|
dev = dev_get_by_name(&init_net, e->ip.iniface);
|
|
|
if (!dev) {
|
|
|
pr_info("no such interface %s\n",
|
|
|
e->ip.iniface);
|
|
|
- return false;
|
|
|
+ return -EINVAL;
|
|
|
}
|
|
|
|
|
|
config = clusterip_config_init(cipinfo,
|
|
@@ -395,7 +395,7 @@ static int clusterip_tg_check(const struct xt_tgchk_param *par)
|
|
|
if (!config) {
|
|
|
pr_info("cannot allocate config\n");
|
|
|
dev_put(dev);
|
|
|
- return false;
|
|
|
+ return -EINVAL;
|
|
|
}
|
|
|
dev_mc_add(config->dev,config->clustermac, ETH_ALEN, 0);
|
|
|
}
|
|
@@ -405,10 +405,10 @@ static int clusterip_tg_check(const struct xt_tgchk_param *par)
|
|
|
if (nf_ct_l3proto_try_module_get(par->family) < 0) {
|
|
|
pr_info("cannot load conntrack support for proto=%u\n",
|
|
|
par->family);
|
|
|
- return false;
|
|
|
+ return -EINVAL;
|
|
|
}
|
|
|
|
|
|
- return true;
|
|
|
+ return 0;
|
|
|
}
|
|
|
|
|
|
/* drop reference count of cluster config when rule is deleted */
|