mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 23:20:50 +07:00
Merge branch 'ebt_config_compat_v4' of git://git.breakpoint.cc/fw/nf-next-2.6
This commit is contained in:
commit
477c608673
@ -84,6 +84,19 @@ static bool ebt_limit_mt_check(const struct xt_mtchk_param *par)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef CONFIG_COMPAT
|
||||||
|
/*
|
||||||
|
* no conversion function needed --
|
||||||
|
* only avg/burst have meaningful values in userspace.
|
||||||
|
*/
|
||||||
|
struct ebt_compat_limit_info {
|
||||||
|
compat_uint_t avg, burst;
|
||||||
|
compat_ulong_t prev;
|
||||||
|
compat_uint_t credit, credit_cap, cost;
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
static struct xt_match ebt_limit_mt_reg __read_mostly = {
|
static struct xt_match ebt_limit_mt_reg __read_mostly = {
|
||||||
.name = "limit",
|
.name = "limit",
|
||||||
.revision = 0,
|
.revision = 0,
|
||||||
@ -91,6 +104,9 @@ static struct xt_match ebt_limit_mt_reg __read_mostly = {
|
|||||||
.match = ebt_limit_mt,
|
.match = ebt_limit_mt,
|
||||||
.checkentry = ebt_limit_mt_check,
|
.checkentry = ebt_limit_mt_check,
|
||||||
.matchsize = sizeof(struct ebt_limit_info),
|
.matchsize = sizeof(struct ebt_limit_info),
|
||||||
|
#ifdef CONFIG_COMPAT
|
||||||
|
.compatsize = sizeof(struct ebt_compat_limit_info),
|
||||||
|
#endif
|
||||||
.me = THIS_MODULE,
|
.me = THIS_MODULE,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -52,6 +52,32 @@ static bool ebt_mark_tg_check(const struct xt_tgchk_param *par)
|
|||||||
return false;
|
return false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
#ifdef CONFIG_COMPAT
|
||||||
|
struct compat_ebt_mark_t_info {
|
||||||
|
compat_ulong_t mark;
|
||||||
|
compat_uint_t target;
|
||||||
|
};
|
||||||
|
|
||||||
|
static void mark_tg_compat_from_user(void *dst, const void *src)
|
||||||
|
{
|
||||||
|
const struct compat_ebt_mark_t_info *user = src;
|
||||||
|
struct ebt_mark_t_info *kern = dst;
|
||||||
|
|
||||||
|
kern->mark = user->mark;
|
||||||
|
kern->target = user->target;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int mark_tg_compat_to_user(void __user *dst, const void *src)
|
||||||
|
{
|
||||||
|
struct compat_ebt_mark_t_info __user *user = dst;
|
||||||
|
const struct ebt_mark_t_info *kern = src;
|
||||||
|
|
||||||
|
if (put_user(kern->mark, &user->mark) ||
|
||||||
|
put_user(kern->target, &user->target))
|
||||||
|
return -EFAULT;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static struct xt_target ebt_mark_tg_reg __read_mostly = {
|
static struct xt_target ebt_mark_tg_reg __read_mostly = {
|
||||||
.name = "mark",
|
.name = "mark",
|
||||||
@ -60,6 +86,11 @@ static struct xt_target ebt_mark_tg_reg __read_mostly = {
|
|||||||
.target = ebt_mark_tg,
|
.target = ebt_mark_tg,
|
||||||
.checkentry = ebt_mark_tg_check,
|
.checkentry = ebt_mark_tg_check,
|
||||||
.targetsize = sizeof(struct ebt_mark_t_info),
|
.targetsize = sizeof(struct ebt_mark_t_info),
|
||||||
|
#ifdef CONFIG_COMPAT
|
||||||
|
.compatsize = sizeof(struct compat_ebt_mark_t_info),
|
||||||
|
.compat_from_user = mark_tg_compat_from_user,
|
||||||
|
.compat_to_user = mark_tg_compat_to_user,
|
||||||
|
#endif
|
||||||
.me = THIS_MODULE,
|
.me = THIS_MODULE,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -35,6 +35,38 @@ static bool ebt_mark_mt_check(const struct xt_mtchk_param *par)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef CONFIG_COMPAT
|
||||||
|
struct compat_ebt_mark_m_info {
|
||||||
|
compat_ulong_t mark, mask;
|
||||||
|
uint8_t invert, bitmask;
|
||||||
|
};
|
||||||
|
|
||||||
|
static void mark_mt_compat_from_user(void *dst, const void *src)
|
||||||
|
{
|
||||||
|
const struct compat_ebt_mark_m_info *user = src;
|
||||||
|
struct ebt_mark_m_info *kern = dst;
|
||||||
|
|
||||||
|
kern->mark = user->mark;
|
||||||
|
kern->mask = user->mask;
|
||||||
|
kern->invert = user->invert;
|
||||||
|
kern->bitmask = user->bitmask;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int mark_mt_compat_to_user(void __user *dst, const void *src)
|
||||||
|
{
|
||||||
|
struct compat_ebt_mark_m_info __user *user = dst;
|
||||||
|
const struct ebt_mark_m_info *kern = src;
|
||||||
|
|
||||||
|
if (put_user(kern->mark, &user->mark) ||
|
||||||
|
put_user(kern->mask, &user->mask) ||
|
||||||
|
put_user(kern->invert, &user->invert) ||
|
||||||
|
put_user(kern->bitmask, &user->bitmask))
|
||||||
|
return -EFAULT;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static struct xt_match ebt_mark_mt_reg __read_mostly = {
|
static struct xt_match ebt_mark_mt_reg __read_mostly = {
|
||||||
.name = "mark_m",
|
.name = "mark_m",
|
||||||
.revision = 0,
|
.revision = 0,
|
||||||
@ -42,6 +74,11 @@ static struct xt_match ebt_mark_mt_reg __read_mostly = {
|
|||||||
.match = ebt_mark_mt,
|
.match = ebt_mark_mt,
|
||||||
.checkentry = ebt_mark_mt_check,
|
.checkentry = ebt_mark_mt_check,
|
||||||
.matchsize = sizeof(struct ebt_mark_m_info),
|
.matchsize = sizeof(struct ebt_mark_m_info),
|
||||||
|
#ifdef CONFIG_COMPAT
|
||||||
|
.compatsize = sizeof(struct compat_ebt_mark_m_info),
|
||||||
|
.compat_from_user = mark_mt_compat_from_user,
|
||||||
|
.compat_to_user = mark_mt_compat_to_user,
|
||||||
|
#endif
|
||||||
.me = THIS_MODULE,
|
.me = THIS_MODULE,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user