ri->invert = 1;
}
-static void
-print_realm(unsigned long id, unsigned long mask, int numeric)
-{
- const char *name = NULL;
-
- if (mask != 0xffffffff)
- printf(" 0x%lx/0x%lx", id, mask);
- else {
- if (numeric == 0)
- name = xtables_lmap_id2name(realms, id);
- if (name)
- printf(" %s", name);
- else
- printf(" 0x%lx", id);
- }
-}
-
static void realm_print(const void *ip, const struct xt_entry_match *match,
int numeric)
{
printf(" !");
printf(" realm");
- print_realm(ri->id, ri->mask, numeric);
+ xtables_print_val_mask(ri->id, ri->mask, numeric ? NULL : realms);
}
static void realm_save(const void *ip, const struct xt_entry_match *match)
printf(" !");
printf(" --realm");
- print_realm(ri->id, ri->mask, 0);
+ xtables_print_val_mask(ri->id, ri->mask, realms);
}
static void
markinfo->invert = 1;
}
-static void print_mark(unsigned int mark, unsigned int mask)
-{
- if (mask != 0xffffffffU)
- printf(" 0x%x/0x%x", mark, mask);
- else
- printf(" 0x%x", mark);
-}
-
static void
connmark_print(const void *ip, const struct xt_entry_match *match, int numeric)
{
printf(" CONNMARK match ");
if (info->invert)
printf("!");
- print_mark(info->mark, info->mask);
+
+ xtables_print_mark_mask(info->mark, info->mask);
}
static void
printf(" connmark match ");
if (info->invert)
printf("!");
- print_mark(info->mark, info->mask);
+
+ xtables_print_mark_mask(info->mark, info->mask);
}
static void connmark_save(const void *ip, const struct xt_entry_match *match)
printf(" !");
printf(" --mark");
- print_mark(info->mark, info->mask);
+ xtables_print_mark_mask(info->mark, info->mask);
}
static void
printf(" !");
printf(" --mark");
- print_mark(info->mark, info->mask);
+ xtables_print_mark_mask(info->mark, info->mask);
}
static void print_mark_xlate(unsigned int mark, unsigned int mask,
}
}
-static void
-print_devgroup(unsigned int id, unsigned int mask, int numeric)
-{
- const char *name = NULL;
-
- if (mask != 0xffffffff)
- printf("0x%x/0x%x", id, mask);
- else {
- if (numeric == 0)
- name = xtables_lmap_id2name(devgroups, id);
- if (name)
- printf("%s", name);
- else
- printf("0x%x", id);
- }
-}
-
static void devgroup_show(const char *pfx, const struct xt_devgroup_info *info,
int numeric)
{
if (info->flags & XT_DEVGROUP_MATCH_SRC) {
if (info->flags & XT_DEVGROUP_INVERT_SRC)
printf(" !");
- printf(" %ssrc-group ", pfx);
- print_devgroup(info->src_group, info->src_mask, numeric);
+ printf(" %ssrc-group", pfx);
+ xtables_print_val_mask(info->src_group, info->src_mask,
+ numeric ? NULL : devgroups);
}
if (info->flags & XT_DEVGROUP_MATCH_DST) {
if (info->flags & XT_DEVGROUP_INVERT_DST)
printf(" !");
- printf(" %sdst-group ", pfx);
- print_devgroup(info->dst_group, info->dst_mask, numeric);
+ printf(" %sdst-group", pfx);
+ xtables_print_val_mask(info->dst_group, info->dst_mask,
+ numeric ? NULL : devgroups);
}
}
markinfo->mask = cb->val.mask;
}
-static void print_mark(unsigned int mark, unsigned int mask)
-{
- if (mask != 0xffffffffU)
- printf(" 0x%x/0x%x", mark, mask);
- else
- printf(" 0x%x", mark);
-}
-
static void
mark_mt_print(const void *ip, const struct xt_entry_match *match, int numeric)
{
printf(" mark match");
if (info->invert)
printf(" !");
- print_mark(info->mark, info->mask);
+
+ xtables_print_mark_mask(info->mark, info->mask);
}
static void
if (info->invert)
printf(" !");
- print_mark(info->mark, info->mask);
+ xtables_print_mark_mask(info->mark, info->mask);
}
static void mark_mt_save(const void *ip, const struct xt_entry_match *match)
printf(" !");
printf(" --mark");
- print_mark(info->mark, info->mask);
+ xtables_print_mark_mask(info->mark, info->mask);
}
static void
printf(" !");
printf(" --mark");
- print_mark(info->mark, info->mask);
+ xtables_print_mark_mask(info->mark, info->mask);
}
static void
xtables_parse_val_mask(cb, mark, mask, NULL);
}
+extern void xtables_print_val_mask(unsigned int val, unsigned int mask,
+ const struct xtables_lmap *lmap);
+
+static inline void xtables_print_mark_mask(unsigned int mark,
+ unsigned int mask)
+{
+ xtables_print_val_mask(mark, mask, NULL);
+}
+
#if defined(ALL_INCLUSIVE) || defined(NO_SHARED_LIBS)
# ifdef _INIT
# undef _init
cb->ext_name, cb->arg, cb->entry->name);
}
+void xtables_print_val_mask(unsigned int val, unsigned int mask,
+ const struct xtables_lmap *lmap)
+{
+ if (mask != ~0U) {
+ printf(" 0x%x/0x%x", val, mask);
+ return;
+ }
+
+ if (lmap) {
+ const char *name = xtables_lmap_id2name(lmap, val);
+
+ if (name) {
+ printf(" %s", name);
+ return;
+ }
+ }
+
+ printf(" 0x%x", val);
+}
+
int kernel_version;
void get_kernel_version(void)