All of lore.kernel.org
 help / color / mirror / Atom feed
From: kbuild test robot <lkp@intel.com>
To: Yi-Hung Wei <yihung.wei@gmail.com>
Cc: kbuild-all@01.org, netdev@vger.kernel.org,
	Yi-Hung Wei <yihung.wei@gmail.com>,
	Pravin Shelar <pshelar@ovn.org>
Subject: Re: [PATCH 2/2] openvswitch: Add timeout support to ct action
Date: Sat, 23 Mar 2019 21:58:16 +0800	[thread overview]
Message-ID: <201903232109.znu3fAwU%lkp@intel.com> (raw)
In-Reply-To: <1553276009-39311-2-git-send-email-yihung.wei@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 7752 bytes --]

Hi Yi-Hung,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on nf-next/master]
[also build test ERROR on v5.1-rc1 next-20190322]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Yi-Hung-Wei/netfilter-Export-nf_ct_-set-destroy-_timeout/20190323-195349
base:   https://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf-next.git master
config: i386-randconfig-n1-201911 (attached as .config)
compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

All errors (new ones prefixed by >>):

   net/openvswitch/conntrack.o: In function `__ovs_ct_free_action':
>> net/openvswitch/conntrack.c:1803: undefined reference to `nf_ct_destroy_timeout'
   net/openvswitch/conntrack.o: In function `ovs_ct_copy_action':
>> net/openvswitch/conntrack.c:1649: undefined reference to `nf_ct_set_timeout'

vim +1803 net/openvswitch/conntrack.c

  1615	
  1616	int ovs_ct_copy_action(struct net *net, const struct nlattr *attr,
  1617			       const struct sw_flow_key *key,
  1618			       struct sw_flow_actions **sfa,  bool log)
  1619	{
  1620		struct ovs_conntrack_info ct_info;
  1621		const char *helper = NULL;
  1622		u16 family;
  1623		int err;
  1624	
  1625		family = key_to_nfproto(key);
  1626		if (family == NFPROTO_UNSPEC) {
  1627			OVS_NLERR(log, "ct family unspecified");
  1628			return -EINVAL;
  1629		}
  1630	
  1631		memset(&ct_info, 0, sizeof(ct_info));
  1632		ct_info.family = family;
  1633	
  1634		nf_ct_zone_init(&ct_info.zone, NF_CT_DEFAULT_ZONE_ID,
  1635				NF_CT_DEFAULT_ZONE_DIR, 0);
  1636	
  1637		err = parse_ct(attr, &ct_info, &helper, log);
  1638		if (err)
  1639			return err;
  1640	
  1641		/* Set up template for tracking connections in specific zones. */
  1642		ct_info.ct = nf_ct_tmpl_alloc(net, &ct_info.zone, GFP_KERNEL);
  1643		if (!ct_info.ct) {
  1644			OVS_NLERR(log, "Failed to allocate conntrack template");
  1645			return -ENOMEM;
  1646		}
  1647	
  1648		if (ct_info.timeout[0]) {
> 1649			if (nf_ct_set_timeout(net, ct_info.ct, family, key->ip.proto,
  1650					      ct_info.timeout))
  1651				pr_info_ratelimited("Failed to associated timeout "
  1652						    "policy `%s'\n", ct_info.timeout);
  1653		}
  1654	
  1655		if (helper) {
  1656			err = ovs_ct_add_helper(&ct_info, helper, key, log);
  1657			if (err)
  1658				goto err_free_ct;
  1659		}
  1660	
  1661		err = ovs_nla_add_action(sfa, OVS_ACTION_ATTR_CT, &ct_info,
  1662					 sizeof(ct_info), log);
  1663		if (err)
  1664			goto err_free_ct;
  1665	
  1666		__set_bit(IPS_CONFIRMED_BIT, &ct_info.ct->status);
  1667		nf_conntrack_get(&ct_info.ct->ct_general);
  1668		return 0;
  1669	err_free_ct:
  1670		__ovs_ct_free_action(&ct_info);
  1671		return err;
  1672	}
  1673	
  1674	#ifdef CONFIG_NF_NAT_NEEDED
  1675	static bool ovs_ct_nat_to_attr(const struct ovs_conntrack_info *info,
  1676				       struct sk_buff *skb)
  1677	{
  1678		struct nlattr *start;
  1679	
  1680		start = nla_nest_start(skb, OVS_CT_ATTR_NAT);
  1681		if (!start)
  1682			return false;
  1683	
  1684		if (info->nat & OVS_CT_SRC_NAT) {
  1685			if (nla_put_flag(skb, OVS_NAT_ATTR_SRC))
  1686				return false;
  1687		} else if (info->nat & OVS_CT_DST_NAT) {
  1688			if (nla_put_flag(skb, OVS_NAT_ATTR_DST))
  1689				return false;
  1690		} else {
  1691			goto out;
  1692		}
  1693	
  1694		if (info->range.flags & NF_NAT_RANGE_MAP_IPS) {
  1695			if (IS_ENABLED(CONFIG_NF_NAT) &&
  1696			    info->family == NFPROTO_IPV4) {
  1697				if (nla_put_in_addr(skb, OVS_NAT_ATTR_IP_MIN,
  1698						    info->range.min_addr.ip) ||
  1699				    (info->range.max_addr.ip
  1700				     != info->range.min_addr.ip &&
  1701				     (nla_put_in_addr(skb, OVS_NAT_ATTR_IP_MAX,
  1702						      info->range.max_addr.ip))))
  1703					return false;
  1704			} else if (IS_ENABLED(CONFIG_IPV6) &&
  1705				   info->family == NFPROTO_IPV6) {
  1706				if (nla_put_in6_addr(skb, OVS_NAT_ATTR_IP_MIN,
  1707						     &info->range.min_addr.in6) ||
  1708				    (memcmp(&info->range.max_addr.in6,
  1709					    &info->range.min_addr.in6,
  1710					    sizeof(info->range.max_addr.in6)) &&
  1711				     (nla_put_in6_addr(skb, OVS_NAT_ATTR_IP_MAX,
  1712						       &info->range.max_addr.in6))))
  1713					return false;
  1714			} else {
  1715				return false;
  1716			}
  1717		}
  1718		if (info->range.flags & NF_NAT_RANGE_PROTO_SPECIFIED &&
  1719		    (nla_put_u16(skb, OVS_NAT_ATTR_PROTO_MIN,
  1720				 ntohs(info->range.min_proto.all)) ||
  1721		     (info->range.max_proto.all != info->range.min_proto.all &&
  1722		      nla_put_u16(skb, OVS_NAT_ATTR_PROTO_MAX,
  1723				  ntohs(info->range.max_proto.all)))))
  1724			return false;
  1725	
  1726		if (info->range.flags & NF_NAT_RANGE_PERSISTENT &&
  1727		    nla_put_flag(skb, OVS_NAT_ATTR_PERSISTENT))
  1728			return false;
  1729		if (info->range.flags & NF_NAT_RANGE_PROTO_RANDOM &&
  1730		    nla_put_flag(skb, OVS_NAT_ATTR_PROTO_HASH))
  1731			return false;
  1732		if (info->range.flags & NF_NAT_RANGE_PROTO_RANDOM_FULLY &&
  1733		    nla_put_flag(skb, OVS_NAT_ATTR_PROTO_RANDOM))
  1734			return false;
  1735	out:
  1736		nla_nest_end(skb, start);
  1737	
  1738		return true;
  1739	}
  1740	#endif
  1741	
  1742	int ovs_ct_action_to_attr(const struct ovs_conntrack_info *ct_info,
  1743				  struct sk_buff *skb)
  1744	{
  1745		struct nlattr *start;
  1746	
  1747		start = nla_nest_start(skb, OVS_ACTION_ATTR_CT);
  1748		if (!start)
  1749			return -EMSGSIZE;
  1750	
  1751		if (ct_info->commit && nla_put_flag(skb, ct_info->force
  1752						    ? OVS_CT_ATTR_FORCE_COMMIT
  1753						    : OVS_CT_ATTR_COMMIT))
  1754			return -EMSGSIZE;
  1755		if (IS_ENABLED(CONFIG_NF_CONNTRACK_ZONES) &&
  1756		    nla_put_u16(skb, OVS_CT_ATTR_ZONE, ct_info->zone.id))
  1757			return -EMSGSIZE;
  1758		if (IS_ENABLED(CONFIG_NF_CONNTRACK_MARK) && ct_info->mark.mask &&
  1759		    nla_put(skb, OVS_CT_ATTR_MARK, sizeof(ct_info->mark),
  1760			    &ct_info->mark))
  1761			return -EMSGSIZE;
  1762		if (IS_ENABLED(CONFIG_NF_CONNTRACK_LABELS) &&
  1763		    labels_nonzero(&ct_info->labels.mask) &&
  1764		    nla_put(skb, OVS_CT_ATTR_LABELS, sizeof(ct_info->labels),
  1765			    &ct_info->labels))
  1766			return -EMSGSIZE;
  1767		if (ct_info->helper) {
  1768			if (nla_put_string(skb, OVS_CT_ATTR_HELPER,
  1769					   ct_info->helper->name))
  1770				return -EMSGSIZE;
  1771		}
  1772		if (ct_info->have_eventmask &&
  1773		    nla_put_u32(skb, OVS_CT_ATTR_EVENTMASK, ct_info->eventmask))
  1774			return -EMSGSIZE;
  1775		if (ct_info->timeout[0]) {
  1776			if (nla_put_string(skb, OVS_CT_ATTR_TIMEOUT, ct_info->timeout))
  1777				return -EMSGSIZE;
  1778		}
  1779	
  1780	#ifdef CONFIG_NF_NAT_NEEDED
  1781		if (ct_info->nat && !ovs_ct_nat_to_attr(ct_info, skb))
  1782			return -EMSGSIZE;
  1783	#endif
  1784		nla_nest_end(skb, start);
  1785	
  1786		return 0;
  1787	}
  1788	
  1789	void ovs_ct_free_action(const struct nlattr *a)
  1790	{
  1791		struct ovs_conntrack_info *ct_info = nla_data(a);
  1792	
  1793		__ovs_ct_free_action(ct_info);
  1794	}
  1795	
  1796	static void __ovs_ct_free_action(struct ovs_conntrack_info *ct_info)
  1797	{
  1798		if (ct_info->helper)
  1799			nf_conntrack_helper_put(ct_info->helper);
  1800		if (ct_info->ct) {
  1801			nf_ct_tmpl_free(ct_info->ct);
  1802			if (ct_info->timeout[0])
> 1803				nf_ct_destroy_timeout(ct_info->ct);
  1804		}
  1805	}
  1806	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 27337 bytes --]

  reply	other threads:[~2019-03-23 13:58 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-22 17:33 [PATCH 1/2] netfilter: Export nf_ct_{set,destroy}_timeout() Yi-Hung Wei
2019-03-22 17:33 ` [PATCH 2/2] openvswitch: Add timeout support to ct action Yi-Hung Wei
2019-03-23 13:58   ` kbuild test robot [this message]
2019-03-23 14:59 ` [PATCH 1/2] netfilter: Export nf_ct_{set,destroy}_timeout() kbuild test robot
2019-03-23 16:24 ` kbuild test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201903232109.znu3fAwU%lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild-all@01.org \
    --cc=netdev@vger.kernel.org \
    --cc=pshelar@ovn.org \
    --cc=yihung.wei@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.