ate an option */
static int
parse(int c, char **argv, int invert, unsigned int *flags,
- const struct ip6t_entry *entry,
+ const void *entry,
struct xt_entry_target **target)
{
struct ipt_connmark_target_info *markinfo
/* Prints out the target info. */
static void
-print(const struct ip6t_ip6 *ip,
+print(const void *ip,
const struct xt_entry_target *target,
int numeric)
{
/* Saves the target into in parsable form to stdout. */
static void
-save(const struct ip6t_ip6 *ip, const struct xt_entry_target *target)
+save(const void *ip, const struct xt_entry_target *target)
{
const struct ipt_connmark_target_info *markinfo =
(const struct ipt_connmark_target_info *)target->data;
};
static int parse(int c, char **argv, int invert, unsigned int *flags,
- const struct ip6t_entry *entry, struct xt_entry_target **target)
+ const void *entry, struct xt_entry_target **target)
{
struct xt_connsecmark_target_info *info =
(struct xt_connsecmark_target_info*)(*target)->data;
}
}
-static void print(const struct ip6t_ip6 *ip,
+static void print(const void *ip,
const struct xt_entry_target *target, int numeric)
{
struct xt_connsecmark_target_info *info =
print_connsecmark(info);
}
-static void save(const struct ip6t_ip6 *ip, const struct xt_entry_target *target)
+static void save(const void *ip, const struct xt_entry_target *target)
{
struct xt_connsecmark_target_info *info =
(struct xt_connsecmark_target_info*)target->data;
}
static int parse(int c, char **argv, int invert, unsigned int *flags,
- const struct ip6t_entry *entry,
+ const void *entry,
struct xt_entry_target **target)
{
struct ip6t_HL_info *info = (struct ip6t_HL_info *) (*target)->data;
"HL: You must specify an action");
}
-static void save(const struct ip6t_ip6 *ip,
+static void save(const void *ip,
const struct xt_entry_target *target)
{
const struct ip6t_HL_info *info =
printf("%u ", info->hop_limit);
}
-static void print(const struct ip6t_ip6 *ip,
+static void print(const void *ip,
const struct xt_entry_target *target, int numeric)
{
const struct ip6t_HL_info *info =
ate an option */
static int
parse(int c, char **argv, int invert, unsigned int *flags,
- const struct ip6t_entry *entry,
+ const void *entry,
struct xt_entry_target **target)
{
struct ip6t_log_info *loginfo = (struct ip6t_log_info *)(*target)->data;
/* Prints out the targinfo. */
static void
-print(const struct ip6t_ip6 *ip,
+print(const void *ip,
const struct xt_entry_target *target,
int numeric)
{
/* Saves the union ip6t_targinfo in parsable form to stdout. */
static void
-save(const struct ip6t_ip6 *ip, const struct xt_entry_target *target)
+save(const void *ip, const struct xt_entry_target *target)
{
const struct ip6t_log_info *loginfo
= (const struct ip6t_log_info *)target->data;
ate an option */
static int
parse(int c, char **argv, int invert, unsigned int *flags,
- const struct ip6t_entry *entry,
+ const void *entry,
struct xt_entry_target **target)
{
struct ip6t_mark_target_info *markinfo
/* Prints out the targinfo. */
static void
-print(const struct ip6t_ip6 *ip,
+print(const void *ip,
const struct xt_entry_target *target,
int numeric)
{
/* Saves the union ipt_targinfo in parsable form to stdout. */
static void
-save(const struct ip6t_ip6 *ip, const struct xt_entry_target *target)
+save(const void *ip, const struct xt_entry_target *target)
{
const struct ip6t_mark_target_info *markinfo =
(const struct ip6t_mark_target_info *)target->data;
}
static int parse(int c, char **argv, int invert, unsigned int *flags,
- const struct ip6t_entry *entry,
+ const void *entry,
struct xt_entry_target **target)
{
struct xt_nflog_info *info = (struct xt_nflog_info *)(*target)->data;
printf("%snflog-threshold %u ", prefix, info->threshold);
}
-static void print(const struct ip6t_ip6 *ip, const struct xt_entry_target *target,
+static void print(const void *ip, const struct xt_entry_target *target,
int numeric)
{
const struct xt_nflog_info *info = (struct xt_nflog_info *)target->data;
nflog_print(info, "");
}
-static void save(const struct ip6t_ip6 *ip, const struct xt_entry_target *target)
+static void save(const void *ip, const struct xt_entry_target *target)
{
const struct xt_nflog_info *info = (struct xt_nflog_info *)target->data;
static int
parse(int c, char **argv, int invert, unsigned int *flags,
- const struct ip6t_entry *entry,
+ const void *entry,
struct xt_entry_target **target)
{
struct ipt_NFQ_info *tinfo
/* Prints out the targinfo. */
static void
-print(const struct ip6t_ip6 *ip,
+print(const void *ip,
const struct xt_entry_target *target,
int numeric)
{
/* Saves the union ip6t_targinfo in parsable form to stdout. */
static void
-save(const struct ip6t_ip6 *ip, const struct xt_entry_target *target)
+save(const void *ip, const struct xt_entry_target *target)
{
const struct ipt_NFQ_info *tinfo =
(const struct ipt_NFQ_info *)target->data;
ate an option */
static int
parse(int c, char **argv, int invert, unsigned int *flags,
- const struct ip6t_entry *entry,
+ const void *entry,
struct xt_entry_target **target)
{
struct ip6t_reject_info *reject =
/* Prints out ipt_reject_info. */
static void
-print(const struct ip6t_ip6 *ip,
+print(const void *ip,
const struct xt_entry_target *target,
int numeric)
{
}
/* Saves ipt_reject in parsable form to stdout. */
-static void save(const struct ip6t_ip6 *ip,
+static void save(const void *ip,
const struct xt_entry_target *target)
{
const struct ip6t_reject_info *reject
* ate an option.
*/
static int parse(int c, char **argv, int invert, unsigned int *flags,
- const struct ip6t_entry *entry, struct xt_entry_target **target)
+ const void *entry, struct xt_entry_target **target)
{
struct xt_secmark_target_info *info =
(struct xt_secmark_target_info*)(*target)->data;
}
}
-static void print(const struct ip6t_ip6 *ip,
+static void print(const void *ip,
const struct xt_entry_target *target, int numeric)
{
struct xt_secmark_target_info *info =
}
/* Saves the target info in parsable form to stdout. */
-static void save(const struct ip6t_ip6 *ip, const struct xt_entry_target *target)
+static void save(const void *ip, const struct xt_entry_target *target)
{
struct xt_secmark_target_info *info =
(struct xt_secmark_target_info*)target->data;
ate an option */
static int
parse(int c, char **argv, int invert, unsigned int *flags,
- const struct ip6t_entry *entry,
+ const void *entry,
struct xt_entry_target **target)
{
struct ip6t_tcpmss_info *mssinfo
/* Prints out the targinfo. */
static void
-print(const struct ip6t_ip6 *ip6,
+print(const void *ip6,
const struct xt_entry_target *target,
int numeric)
{
/* Saves the union ip6t_targinfo in parsable form to stdout. */
static void
-save(const struct ip6t_ip6 *ip, const struct xt_entry_target *target)
+save(const void *ip, const struct xt_entry_target *target)
{
const struct ip6t_tcpmss_info *mssinfo =
(const struct ip6t_tcpmss_info *)target->data;
ate an option */
static int
parse(int c, char **argv, int invert, unsigned int *flags,
- const struct ip6t_entry *entry,
+ const void *entry,
unsigned int *nfcache,
struct xt_entry_match **match)
{
/* Prints out the union ip6t_matchinfo. */
static void
-print(const struct ip6t_ip6 *ip,
+print(const void *ip,
const struct xt_entry_match *match, int numeric)
{
const struct ip6t_ah *ah = (struct ip6t_ah *)match->data;
}
/* Saves the union ip6t_matchinfo in parsable form to stdout. */
-static void save(const struct ip6t_ip6 *ip, const struct xt_entry_match *match)
+static void save(const void *ip, const struct xt_entry_match *match)
{
const struct ip6t_ah *ahinfo = (struct ip6t_ah *)match->data;
static int
parse(int c, char **argv, int invert, unsigned int *flags,
- const struct ip6t_entry *entry, unsigned int *nfcache,
+ const void *entry, unsigned int *nfcache,
struct xt_entry_match **match)
{
struct condition6_info *info =
static void
-print(const struct ip6t_ip6 *ip,
+print(const void *ip,
const struct xt_entry_match *match, int numeric)
{
const struct condition6_info *info =
static void
-save(const struct ip6t_ip6 *ip,
+save(const void *ip,
const struct xt_entry_match *match)
{
const struct condition6_info *info =
ate an option */
static int
parse(int c, char **argv, int invert, unsigned int *flags,
- const struct ip6t_entry *entry,
+ const void *entry,
unsigned int *nfcache,
struct xt_entry_match **match)
{
/* Prints out the matchinfo. */
static void
-print(const struct ip6t_ip6 *ip,
+print(const void *ip,
const struct xt_entry_match *match,
int numeric)
{
/* Saves the matchinfo in parsable form to stdout. */
static void
-save(const struct ip6t_ip6 *ip, const struct xt_entry_match *match)
+save(const void *ip, const struct xt_entry_match *match)
{
struct ipt_connmark_info *info = (struct ipt_connmark_info *)match->data;
ate an option */
static int
parse(int c, char **argv, int invert, unsigned int *flags,
- const struct ip6t_entry *entry,
+ const void *entry,
unsigned int *nfcache,
struct xt_entry_match **match)
{
/* Prints out the union ip6t_matchinfo. */
static void
-print(const struct ip6t_ip6 *ip,
+print(const void *ip,
const struct xt_entry_match *match, int numeric)
{
const struct ip6t_opts *optinfo = (struct ip6t_opts *)match->data;
}
/* Saves the union ip6t_matchinfo in parsable form to stdout. */
-static void save(const struct ip6t_ip6 *ip, const struct xt_entry_match *match)
+static void save(const void *ip, const struct xt_entry_match *match)
{
const struct ip6t_opts *optinfo = (struct ip6t_opts *)match->data;
ate an option */
static int
parse(int c, char **argv, int invert, unsigned int *flags,
- const struct ip6t_entry *entry,
+ const void *entry,
unsigned int *nfcache,
struct xt_entry_match **match)
{
/* Prints out the union ip6t_matchinfo. */
static void
-print(const struct ip6t_ip6 *ip,
+print(const void *ip,
const struct xt_entry_match *match, int numeric)
{
const struct ip6t_esp *esp = (struct ip6t_esp *)match->data;
}
/* Saves the union ip6t_matchinfo in parsable form to stdout. */
-static void save(const struct ip6t_ip6 *ip, const struct xt_entry_match *match)
+static void save(const void *ip, const struct xt_entry_match *match)
{
const struct ip6t_esp *espinfo = (struct ip6t_esp *)match->data;
ate an option */
static int
parse(int c, char **argv, int invert, unsigned int *flags,
- const struct ip6t_entry *entry,
+ const void *entry,
unsigned int *nfcache,
struct xt_entry_match **match)
{
/* Prints out the matchinfo. */
static void
-print(const struct ip6t_ip6 *ip,
+print(const void *ip,
const struct xt_entry_match *match,
int numeric)
{
}
/* Saves the union ip6t_matchinfo in parsable form to stdout. */
-static void save(const struct ip6t_ip6 *ip, const struct xt_entry_match *match)
+static void save(const void *ip, const struct xt_entry_match *match)
{
}
ate an option */
static int
parse(int c, char **argv, int invert, unsigned int *flags,
- const struct ip6t_entry *entry,
+ const void *entry,
unsigned int *nfcache,
struct xt_entry_match **match)
{
/* Prints out the union ip6t_matchinfo. */
static void
-print(const struct ip6t_ip6 *ip,
+print(const void *ip,
const struct xt_entry_match *match, int numeric)
{
const struct ip6t_frag *frag = (struct ip6t_frag *)match->data;
}
/* Saves the union ip6t_matchinfo in parsable form to stdout. */
-static void save(const struct ip6t_ip6 *ip, const struct xt_entry_match *match)
+static void save(const void *ip, const struct xt_entry_match *match)
{
const struct ip6t_frag *fraginfo = (struct ip6t_frag *)match->data;
ate an option */
static int
parse(int c, char **argv, int invert, unsigned int *flags,
- const struct ip6t_entry *entry,
+ const void *entry,
unsigned int *nfcache,
struct ip6t_entry_match **match)
{
/* Prints out the matchinfo. */
static void
-print(const struct ip6t_ip6 *ip,
+print(const void *ip,
const struct ip6t_entry_match *match,
int numeric)
{
}
/* FIXME: Make minimalist: only print rate if not default --RR */
-static void save(const struct ip6t_ip6 *ip, const struct ip6t_entry_match *match)
+static void save(const void *ip, const struct ip6t_entry_match *match)
{
struct xt_hashlimit_info *r =
(struct xt_hashlimit_info *)match->data;
ate an option */
static int
parse(int c, char **argv, int invert, unsigned int *flags,
- const struct ip6t_entry *entry,
+ const void *entry,
unsigned int *nfcache,
struct xt_entry_match **match)
{
/* Prints out the union ip6t_matchinfo. */
static void
-print(const struct ip6t_ip6 *ip,
+print(const void *ip,
const struct xt_entry_match *match, int numeric)
{
const struct ip6t_opts *optinfo = (struct ip6t_opts *)match->data;
}
/* Saves the union ip6t_matchinfo in parsable form to stdout. */
-static void save(const struct ip6t_ip6 *ip, const struct xt_entry_match *match)
+static void save(const void *ip, const struct xt_entry_match *match)
{
const struct ip6t_opts *optinfo = (struct ip6t_opts *)match->data;
}
static int parse(int c, char **argv, int invert, unsigned int *flags,
- const struct ip6t_entry *entry, unsigned int *nfcache,
+ const void *entry, unsigned int *nfcache,
struct xt_entry_match **match)
{
struct ip6t_hl_info *info = (struct ip6t_hl_info *) (*match)->data;
"`--hl-eq', `--hl-lt', `--hl-gt'");
}
-static void print(const struct ip6t_ip6 *ip,
+static void print(const void *ip,
const struct xt_entry_match *match,
int numeric)
{
printf("HL match HL %s %u ", op[info->mode], info->hop_limit);
}
-static void save(const struct ip6t_ip6 *ip,
+static void save(const void *ip,
const struct xt_entry_match *match)
{
static const char *op[] = {
ate an option */
static int
parse(int c, char **argv, int invert, unsigned int *flags,
- const struct ip6t_entry *entry,
+ const void *entry,
unsigned int *nfcache,
struct xt_entry_match **match)
{
/* Prints out the union ipt_matchinfo. */
static void
-print(const struct ip6t_ip6 *ip,
+print(const void *ip,
const struct xt_entry_match *match,
int numeric)
{
}
/* Saves the match in parsable form to stdout. */
-static void save(const struct ip6t_ip6 *ip, const struct xt_entry_match *match)
+static void save(const void *ip, const struct xt_entry_match *match)
{
const struct ip6t_icmp *icmpv6 = (struct ip6t_icmp *)match->data;
/* Parses command options; returns 0 if it ate an option */
static int
parse(int c, char **argv, int invert, unsigned int *flags,
- const struct ip6t_entry *entry,
+ const void *entry,
unsigned int *nfcache,
struct xt_entry_match **match)
{
/* Prints out the match */
static void
-print(const struct ip6t_ip6 *ip,
+print(const void *ip,
const struct xt_entry_match *match,
int numeric)
{
/* Saves the match */
static void
-save(const struct ip6t_ip6 *ip,
+save(const void *ip,
const struct xt_entry_match *match)
{
ate an option */
static int
parse(int c, char **argv, int invert, unsigned int *flags,
- const struct ip6t_entry *entry,
+ const void *entry,
unsigned int *nfcache,
struct xt_entry_match **match)
{
/* Prints out the matchinfo. */
static void
-print(const struct ip6t_ip6 *ip,
+print(const void *ip,
const struct xt_entry_match *match,
int numeric)
{
/* Saves the union ip6t_matchinfo in parsable form to stdout. */
static void
-save(const struct ip6t_ip6 *ip, const struct xt_entry_match *match)
+save(const void *ip, const struct xt_entry_match *match)
{
printf("--length ");
print_length((struct ip6t_length_info *)match->data);
ate an option */
static int
parse(int c, char **argv, int invert, unsigned int *flags,
- const struct ip6t_entry *entry,
+ const void *entry,
unsigned int *nfcache,
struct xt_entry_match **match)
{
/* Prints out the matchinfo. */
static void
-print(const struct ip6t_ip6 *ip,
+print(const void *ip,
const struct xt_entry_match *match,
int numeric)
{
}
/* FIXME: Make minimalist: only print rate if not default --RR */
-static void save(const struct ip6t_ip6 *ip, const struct xt_entry_match *match)
+static void save(const void *ip, const struct xt_entry_match *match)
{
struct ip6t_rateinfo *r = (struct ip6t_rateinfo *)match->data;
ate an option */
static int
parse(int c, char **argv, int invert, unsigned int *flags,
- const struct ip6t_entry *entry,
+ const void *entry,
unsigned int *nfcache,
struct xt_entry_match **match)
{
/* Prints out the matchinfo. */
static void
-print(const struct ip6t_ip6 *ip,
+print(const void *ip,
const struct xt_entry_match *match,
int numeric)
{
}
/* Saves the union ip6t_matchinfo in parsable form to stdout. */
-static void save(const struct ip6t_ip6 *ip, const struct xt_entry_match *match)
+static void save(const void *ip, const struct xt_entry_match *match)
{
if (((struct ip6t_mac_info *)match->data)->invert)
printf("! ");
ate an option */
static int
parse(int c, char **argv, int invert, unsigned int *flags,
- const struct ip6t_entry *entry,
+ const void *entry,
unsigned int *nfcache,
struct xt_entry_match **match)
{
/* Prints out the matchinfo. */
static void
-print(const struct ip6t_ip6 *ip,
+print(const void *ip,
const struct xt_entry_match *match,
int numeric)
{
/* Saves the union ip6t_matchinfo in parsable form to stdout. */
static void
-save(const struct ip6t_ip6 *ip, const struct xt_entry_match *match)
+save(const void *ip, const struct xt_entry_match *match)
{
struct ip6t_mark_info *info = (struct ip6t_mark_info *)match->data;
#define MH_TYPES 0x01
static int parse(int c, char **argv, int invert, unsigned int *flags,
- const struct ip6t_entry *entry,
+ const void *entry,
unsigned int *nfcache,
struct xt_entry_match **match)
{
}
}
-static void print(const struct ip6t_ip6 *ip,
+static void print(const void *ip,
const struct xt_entry_match *match,
int numeric)
{
mhinfo->invflags & ~IP6T_MH_INV_MASK);
}
-static void save(const struct ip6t_ip6 *ip, const struct xt_entry_match *match)
+static void save(const void *ip, const struct xt_entry_match *match)
{
const struct ip6t_mh *mhinfo = (struct ip6t_mh *)match->data;
ate an option */
static int
parse(int c, char **argv, int invert, unsigned int *flags,
- const struct ip6t_entry *entry,
+ const void *entry,
unsigned int *nfcache,
struct xt_entry_match **match)
{
/* Prints out the matchinfo. */
static void
-print(const struct ip6t_ip6 *ip,
+print(const void *ip,
const struct xt_entry_match *match,
int numeric)
{
/* Saves the union ip6t_matchinfo in parsable form to stdout. */
static void
-save(const struct ip6t_ip6 *ip, const struct xt_entry_match *match)
+save(const void *ip, const struct xt_entry_match *match)
{
struct ip6t_owner_info *info = (struct ip6t_owner_info *)match->data;
static int
parse(int c, char **argv, int invert, unsigned int *flags,
- const struct ip6t_entry *entry,
+ const void *entry,
unsigned int *nfcache,
struct xt_entry_match **match)
{
}
static void
-print(const struct ip6t_ip6 *ip,
+print(const void *ip,
const struct xt_entry_match *match,
int numeric)
{
printf(" ");
}
-static void save(const struct ip6t_ip6 *ip, const struct xt_entry_match *match)
+static void save(const void *ip, const struct xt_entry_match *match)
{
struct ip6t_physdev_info *info =
(struct ip6t_physdev_info*)match->data;
}
static int parse(int c, char **argv, int invert, unsigned int *flags,
- const struct ip6t_entry *entry,
+ const void *entry,
unsigned int *nfcache,
struct xt_entry_match **match)
{
printf("%sstrict ", prefix);
}
-static void print(const struct ip6t_ip6 *ip,
+static void print(const void *ip,
const struct xt_entry_match *match,
int numeric)
{
printf("\n");
}
-static void save(const struct ip6t_ip6 *ip, const struct xt_entry_match *match)
+static void save(const void *ip, const struct xt_entry_match *match)
{
const struct ip6t_policy_info *info = (void *)match->data;
unsigned int i;
ate an option */
static int
parse(int c, char **argv, int invert, unsigned int *flags,
- const struct ip6t_entry *entry,
+ const void *entry,
unsigned int *nfcache,
struct xt_entry_match **match)
{
/* Prints out the union ip6t_matchinfo. */
static void
-print(const struct ip6t_ip6 *ip,
+print(const void *ip,
const struct xt_entry_match *match, int numeric)
{
const struct ip6t_rt *rtinfo = (struct ip6t_rt *)match->data;
}
/* Saves the union ip6t_matchinfo in parsable form to stdout. */
-static void save(const struct ip6t_ip6 *ip, const struct xt_entry_match *match)
+static void save(const void *ip, const struct xt_entry_match *match)
{
const struct ip6t_rt *rtinfo = (struct ip6t_rt *)match->data;
static int
parse(int c, char **argv, int invert, unsigned int *flags,
- const struct ip6t_entry *entry,
+ const void *entry,
unsigned int *nfcache,
struct ip6t_entry_match **match)
{
/* Prints out the matchinfo. */
static void
-print(const struct ip6t_ip6 *ip,
+print(const void *ip,
const struct ip6t_entry_match *match,
int numeric)
{
/* Saves the union xt_matchinfo in parsable form to stdout. */
static void
-save(const struct ip6t_ip6 *ip,
+save(const void *ip,
const struct ip6t_entry_match *match)
{
const struct xt_sctp_info *einfo =
ate an option */
static int
parse(int c, char **argv, int invert, unsigned int *flags,
- const struct ip6t_entry *entry,
+ const void *entry,
struct xt_entry_target **target)
{
return 0;
/* Saves the targinfo in parsable form to stdout. */
static void
-save(const struct ip6t_ip6 *ip6, const struct xt_entry_target *target)
+save(const void *ip6, const struct xt_entry_target *target)
{
}
ate an option */
static int
parse(int c, char **argv, int invert, unsigned int *flags,
- const struct ip6t_entry *entry,
+ const void *entry,
unsigned int *nfcache,
struct xt_entry_match **match)
{
/* Prints out the matchinfo. */
static void
-print(const struct ip6t_ip6 *ip,
+print(const void *ip,
const struct xt_entry_match *match,
int numeric)
{
}
/* Saves the matchinfo in parsable form to stdout. */
-static void save(const struct ip6t_ip6 *ip, const struct xt_entry_match *match)
+static void save(const void *ip, const struct xt_entry_match *match)
{
struct ipt_state_info *sinfo = (struct ipt_state_info *)match->data;
ate an option. */
static int
parse(int c, char **argv, int invert, unsigned int *flags,
- const struct ip6t_entry *entry,
+ const void *entry,
unsigned int *nfcache,
struct xt_entry_match **match)
{
/* Prints out the union ipt_matchinfo. */
static void
-print(const struct ip6t_ip6 *ip,
+print(const void *ip,
const struct xt_entry_match *match, int numeric)
{
const struct ip6t_tcp *tcp = (struct ip6t_tcp *)match->data;
}
/* Saves the union ipt_matchinfo in parsable form to stdout. */
-static void save(const struct ip6t_ip6 *ip, const struct xt_entry_match *match)
+static void save(const void *ip, const struct xt_entry_match *match)
{
const struct ip6t_tcp *tcpinfo = (struct ip6t_tcp *)match->data;
ate an option */
static int
parse(int c, char **argv, int invert, unsigned int *flags,
- const struct ip6t_entry *entry,
+ const void *entry,
unsigned int *nfcache,
struct xt_entry_match **match)
{
/* Prints out the union ipt_matchinfo. */
static void
-print(const struct ip6t_ip6 *ip,
+print(const void *ip,
const struct xt_entry_match *match, int numeric)
{
const struct ip6t_udp *udp = (struct ip6t_udp *)match->data;
}
/* Saves the union ipt_matchinfo in parsable form to stdout. */
-static void save(const struct ip6t_ip6 *ip, const struct xt_entry_match *match)
+static void save(const void *ip, const struct xt_entry_match *match)
{
const struct ip6t_udp *udpinfo = (struct ip6t_udp *)match->data;