Loading net/bridge/netfilter/ebt_limit.c +16 −0 Original line number Diff line number Diff line Loading @@ -84,6 +84,19 @@ static bool ebt_limit_mt_check(const struct xt_mtchk_param *par) 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 = { .name = "limit", .revision = 0, Loading @@ -91,6 +104,9 @@ static struct xt_match ebt_limit_mt_reg __read_mostly = { .match = ebt_limit_mt, .checkentry = ebt_limit_mt_check, .matchsize = sizeof(struct ebt_limit_info), #ifdef CONFIG_COMPAT .compatsize = sizeof(struct ebt_compat_limit_info), #endif .me = THIS_MODULE, }; Loading net/bridge/netfilter/ebt_mark.c +31 −0 Original line number Diff line number Diff line Loading @@ -52,6 +52,32 @@ static bool ebt_mark_tg_check(const struct xt_tgchk_param *par) return false; 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 = { .name = "mark", Loading @@ -60,6 +86,11 @@ static struct xt_target ebt_mark_tg_reg __read_mostly = { .target = ebt_mark_tg, .checkentry = ebt_mark_tg_check, .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, }; Loading net/bridge/netfilter/ebt_mark_m.c +37 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,38 @@ static bool ebt_mark_mt_check(const struct xt_mtchk_param *par) 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 = { .name = "mark_m", .revision = 0, Loading @@ -42,6 +74,11 @@ static struct xt_match ebt_mark_mt_reg __read_mostly = { .match = ebt_mark_mt, .checkentry = ebt_mark_mt_check, .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, }; Loading net/bridge/netfilter/ebtables.c +1048 −127 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
net/bridge/netfilter/ebt_limit.c +16 −0 Original line number Diff line number Diff line Loading @@ -84,6 +84,19 @@ static bool ebt_limit_mt_check(const struct xt_mtchk_param *par) 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 = { .name = "limit", .revision = 0, Loading @@ -91,6 +104,9 @@ static struct xt_match ebt_limit_mt_reg __read_mostly = { .match = ebt_limit_mt, .checkentry = ebt_limit_mt_check, .matchsize = sizeof(struct ebt_limit_info), #ifdef CONFIG_COMPAT .compatsize = sizeof(struct ebt_compat_limit_info), #endif .me = THIS_MODULE, }; Loading
net/bridge/netfilter/ebt_mark.c +31 −0 Original line number Diff line number Diff line Loading @@ -52,6 +52,32 @@ static bool ebt_mark_tg_check(const struct xt_tgchk_param *par) return false; 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 = { .name = "mark", Loading @@ -60,6 +86,11 @@ static struct xt_target ebt_mark_tg_reg __read_mostly = { .target = ebt_mark_tg, .checkentry = ebt_mark_tg_check, .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, }; Loading
net/bridge/netfilter/ebt_mark_m.c +37 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,38 @@ static bool ebt_mark_mt_check(const struct xt_mtchk_param *par) 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 = { .name = "mark_m", .revision = 0, Loading @@ -42,6 +74,11 @@ static struct xt_match ebt_mark_mt_reg __read_mostly = { .match = ebt_mark_mt, .checkentry = ebt_mark_mt_check, .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, }; Loading
net/bridge/netfilter/ebtables.c +1048 −127 File changed.Preview size limit exceeded, changes collapsed. Show changes