Beispiel #1
0
static unsigned int
ebt_log_tg(struct sk_buff *skb, const struct xt_action_param *par) {
  const struct ebt_log_info *info = par->targinfo;
  struct nf_loginfo li;

  li.type = NF_LOG_TYPE_LOG;
  li.u.log.level = info->loglevel;
  li.u.log.logflags = info->bitmask;

  if (info->bitmask & EBT_LOG_NFLOG)
    nf_log_packet(NFPROTO_BRIDGE, par->hooknum, skb, par->in,
                  par->out, &li, "%s", info->prefix);
  else
    ebt_log_packet(NFPROTO_BRIDGE, par->hooknum, skb, par->in,
                   par->out, &li, info->prefix);
  return EBT_CONTINUE;
}
Beispiel #2
0
static void ebt_log(const struct sk_buff *skb, unsigned int hooknr,
   const struct net_device *in, const struct net_device *out,
   const void *data, unsigned int datalen)
{
	struct ebt_log_info *info = (struct ebt_log_info *)data;
	struct nf_loginfo li;

	li.type = NF_LOG_TYPE_LOG;
	li.u.log.level = info->loglevel;
	li.u.log.logflags = info->bitmask;

	if (info->bitmask & EBT_LOG_NFLOG)
		nf_log_packet(PF_BRIDGE, hooknr, skb, in, out, &li,
			      "%s", info->prefix);
	else
		ebt_log_packet(PF_BRIDGE, hooknr, skb, in, out, &li,
			       info->prefix);
}
Beispiel #3
0
static unsigned int
ebt_log_tg(struct sk_buff *skb, const struct xt_action_param *par)
{
	const struct ebt_log_info *info = par->targinfo;
	struct nf_loginfo li;
	struct net *net = xt_net(par);

	li.type = NF_LOG_TYPE_LOG;
	li.u.log.level = info->loglevel;
	li.u.log.logflags = info->bitmask;

	/* Remember that we have to use ebt_log_packet() not to break backward
	 * compatibility. We cannot use the default bridge packet logger via
	 * nf_log_packet() with NFT_LOG_TYPE_LOG here. --Pablo
	 */
	if (info->bitmask & EBT_LOG_NFLOG)
		nf_log_packet(net, NFPROTO_BRIDGE, xt_hooknum(par), skb,
			      xt_in(par), xt_out(par), &li, "%s",
			      info->prefix);
	else
		ebt_log_packet(net, NFPROTO_BRIDGE, xt_hooknum(par), skb,
			       xt_in(par), xt_out(par), &li, info->prefix);
	return EBT_CONTINUE;
}