firewalld.mk 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. ################################################################################
  2. #
  3. # firewalld
  4. #
  5. ################################################################################
  6. FIREWALLD_VERSION = 2.0.2
  7. FIREWALLD_SITE = $(call github,firewalld,firewalld,v$(FIREWALLD_VERSION))
  8. FIREWALLD_LICENSE = GPL-2.0
  9. FIREWALLD_LICENSE_FILES = COPYING
  10. FIREWALLD_CPE_ID_VENDOR = firewalld
  11. FIREWALLD_AUTORECONF = YES
  12. FIREWALLD_DEPENDENCIES = \
  13. host-intltool \
  14. host-libglib2 \
  15. host-libxml2 \
  16. host-libxslt \
  17. dbus-python \
  18. gobject-introspection \
  19. jansson \
  20. nftables \
  21. python3 \
  22. python-gobject
  23. FIREWALLD_SELINUX_MODULES = firewalld
  24. # Firewalld hard codes the python shebangs to the full path of the
  25. # python-interpreter. IE: #!/home/buildroot/output/host/bin/python.
  26. # Force the proper python path.
  27. FIREWALLD_CONF_ENV += PYTHON="/usr/bin/env python3"
  28. # /etc/sysconfig/firewalld is a Red Hat-ism, only referenced by
  29. # the Red Hat-specific init script which isn't used, so we set
  30. # --disable-sysconfig.
  31. FIREWALLD_CONF_OPTS += \
  32. --disable-rpmmacros \
  33. --disable-sysconfig \
  34. --with-nft=/usr/sbin/nft \
  35. --without-ebtables \
  36. --without-ebtables-restore \
  37. --without-ipset \
  38. --without-xml-catalog
  39. ifeq ($(BR2_PACKAGE_IPTABLES),y)
  40. FIREWALLD_DEPENDENCIES += iptables
  41. FIREWALLD_CONF_OPTS += \
  42. --with-ip6tables-restore=/usr/sbin/ip6tables-restore \
  43. --with-ip6tables=/usr/sbin/ip6tables \
  44. --with-iptables-restore=/usr/sbin/iptables-restore \
  45. --with-iptables=/usr/sbin/iptables
  46. else
  47. FIREWALLD_CONF_OPTS += -without-iptables
  48. endif
  49. ifeq ($(BR2_PACKAGE_SYSTEMD),y)
  50. FIREWALLD_DEPENDENCIES += systemd
  51. FIREWALLD_CONF_OPTS += --with-systemd-unitdir=/usr/lib/systemd/system
  52. else
  53. FIREWALLD_CONF_OPTS += --disable-systemd
  54. endif
  55. define FIREWALLD_INSTALL_INIT_SYSTEMD
  56. $(INSTALL) -D -m 0644 $(@D)/config/firewalld.service \
  57. $(TARGET_DIR)/usr/lib/systemd/system/firewalld.service
  58. endef
  59. # The bundled sysvinit file requires /etc/init.d/functions which is not
  60. # provided by buildroot. As such, we provide our own firewalld init file.
  61. define FIREWALLD_INSTALL_INIT_SYSV
  62. $(INSTALL) -D -m 0755 $(FIREWALLD_PKGDIR)/S46firewalld \
  63. $(TARGET_DIR)/etc/init.d/S46firewalld
  64. endef
  65. # Firewalld needs ipv6
  66. # Firewalld requires almost every single nftable option selected.
  67. define FIREWALLD_LINUX_CONFIG_FIXUPS
  68. $(call KCONFIG_ENABLE_OPT,CONFIG_BRIDGE)
  69. $(call KCONFIG_ENABLE_OPT,CONFIG_INET)
  70. $(call KCONFIG_ENABLE_OPT,CONFIG_INET_DIAG)
  71. $(call KCONFIG_ENABLE_OPT,CONFIG_NET)
  72. $(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER)
  73. $(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER_ADVANCED)
  74. $(call KCONFIG_ENABLE_OPT,CONFIG_IPV6)
  75. $(call KCONFIG_ENABLE_OPT,CONFIG_IP6_NF_FILTER)
  76. $(call KCONFIG_ENABLE_OPT,CONFIG_IP6_NF_IPTABLES)
  77. $(call KCONFIG_ENABLE_OPT,CONFIG_IP6_NF_MANGLE)
  78. $(call KCONFIG_ENABLE_OPT,CONFIG_IP6_NF_MATCH_AH)
  79. $(call KCONFIG_ENABLE_OPT,CONFIG_IP6_NF_MATCH_EUI64)
  80. $(call KCONFIG_ENABLE_OPT,CONFIG_IP6_NF_MATCH_FRAG)
  81. $(call KCONFIG_ENABLE_OPT,CONFIG_IP6_NF_MATCH_HL)
  82. $(call KCONFIG_ENABLE_OPT,CONFIG_IP6_NF_MATCH_IPV6HEADER)
  83. $(call KCONFIG_ENABLE_OPT,CONFIG_IP6_NF_MATCH_MH)
  84. $(call KCONFIG_ENABLE_OPT,CONFIG_IP6_NF_MATCH_OPTS)
  85. $(call KCONFIG_ENABLE_OPT,CONFIG_IP6_NF_MATCH_RPFILTER)
  86. $(call KCONFIG_ENABLE_OPT,CONFIG_IP6_NF_MATCH_RT)
  87. $(call KCONFIG_ENABLE_OPT,CONFIG_IP6_NF_MATCH_SRH)
  88. $(call KCONFIG_ENABLE_OPT,CONFIG_IP6_NF_NAT)
  89. $(call KCONFIG_ENABLE_OPT,CONFIG_IP6_NF_RAW)
  90. $(call KCONFIG_ENABLE_OPT,CONFIG_IP6_NF_TARGET_HL)
  91. $(call KCONFIG_ENABLE_OPT,CONFIG_IP6_NF_TARGET_MASQUERADE)
  92. $(call KCONFIG_ENABLE_OPT,CONFIG_IP6_NF_TARGET_NPT)
  93. $(call KCONFIG_ENABLE_OPT,CONFIG_IP6_NF_TARGET_REJECT)
  94. $(call KCONFIG_ENABLE_OPT,CONFIG_IP6_NF_TARGET_SYNPROXY)
  95. $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_ARP_MANGLE)
  96. $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_ARPFILTER)
  97. $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_ARPTABLES)
  98. $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_FILTER)
  99. $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_IPTABLES)
  100. $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_MANGLE)
  101. $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_MATCH_AH)
  102. $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_MATCH_ECN)
  103. $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_MATCH_RPFILTER)
  104. $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_MATCH_TTL)
  105. $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_NAT)
  106. $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_RAW)
  107. $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_TARGET_CLUSTERIP)
  108. $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_TARGET_ECN)
  109. $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_TARGET_MASQUERADE)
  110. $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_TARGET_NETMAP)
  111. $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_TARGET_REDIRECT)
  112. $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_TARGET_REJECT)
  113. $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_TARGET_SYNPROXY)
  114. $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_TARGET_TTL)
  115. $(call KCONFIG_ENABLE_OPT,CONFIG_IP_SET)
  116. $(call KCONFIG_ENABLE_OPT,CONFIG_IP_SET_BITMAP_IP)
  117. $(call KCONFIG_ENABLE_OPT,CONFIG_IP_SET_BITMAP_IPMAC)
  118. $(call KCONFIG_ENABLE_OPT,CONFIG_IP_SET_BITMAP_PORT)
  119. $(call KCONFIG_ENABLE_OPT,CONFIG_IP_SET_HASH_IP)
  120. $(call KCONFIG_ENABLE_OPT,CONFIG_IP_SET_HASH_IPMAC)
  121. $(call KCONFIG_ENABLE_OPT,CONFIG_IP_SET_HASH_IPMARK)
  122. $(call KCONFIG_ENABLE_OPT,CONFIG_IP_SET_HASH_IPPORT)
  123. $(call KCONFIG_ENABLE_OPT,CONFIG_IP_SET_HASH_IPPORTIP)
  124. $(call KCONFIG_ENABLE_OPT,CONFIG_IP_SET_HASH_IPPORTNET)
  125. $(call KCONFIG_ENABLE_OPT,CONFIG_IP_SET_HASH_MAC)
  126. $(call KCONFIG_ENABLE_OPT,CONFIG_IP_SET_HASH_NET)
  127. $(call KCONFIG_ENABLE_OPT,CONFIG_IP_SET_HASH_NETIFACE)
  128. $(call KCONFIG_ENABLE_OPT,CONFIG_IP_SET_HASH_NETNET)
  129. $(call KCONFIG_ENABLE_OPT,CONFIG_IP_SET_HASH_NETPORT)
  130. $(call KCONFIG_ENABLE_OPT,CONFIG_IP_SET_HASH_NETPORTNET)
  131. $(call KCONFIG_ENABLE_OPT,CONFIG_IP_SET_LIST_SET)
  132. $(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER_CONNCOUNT)
  133. $(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER_NETLINK_GLUE_CT)
  134. $(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER_SYNPROXY)
  135. $(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER_XTABLES)
  136. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK)
  137. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK_AMANDA)
  138. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK_BROADCAST)
  139. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK_EVENTS)
  140. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK_FTP)
  141. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK_H323)
  142. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK_IRC)
  143. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK_LABELS)
  144. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK_MARK)
  145. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK_NETBIOS_NS)
  146. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK_PPTP)
  147. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK_PROCFS)
  148. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK_SANE)
  149. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK_SIP)
  150. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK_SNMP)
  151. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK_TFTP)
  152. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK_TIMEOUT)
  153. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK_TIMESTAMP)
  154. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK_ZONES)
  155. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CT_NETLINK)
  156. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CT_NETLINK_HELPER)
  157. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CT_NETLINK_TIMEOUT)
  158. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CT_PROTO_DCCP)
  159. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CT_PROTO_GRE)
  160. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CT_PROTO_SCTP)
  161. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CT_PROTO_UDPLITE)
  162. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_DEFRAG_IPV4)
  163. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_DEFRAG_IPV6)
  164. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_DUP_IPV4)
  165. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_DUP_IPV6)
  166. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_DUP_NETDEV)
  167. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_FLOW_TABLE)
  168. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_FLOW_TABLE_INET)
  169. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_FLOW_TABLE_IPV4)
  170. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_FLOW_TABLE_IPV6)
  171. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_LOG_ARP)
  172. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_LOG_BRIDGE)
  173. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_LOG_COMMON)
  174. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_LOG_IPV4)
  175. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_LOG_IPV6)
  176. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_LOG_NETDEV)
  177. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_NAT)
  178. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_NAT_AMANDA)
  179. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_NAT_FTP)
  180. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_NAT_H323)
  181. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_NAT_IPV4)
  182. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_NAT_IPV6)
  183. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_NAT_IRC)
  184. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_NAT_MASQUERADE_IPV4)
  185. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_NAT_MASQUERADE_IPV6)
  186. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_NAT_NEEDED)
  187. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_NAT_PPTP)
  188. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_NAT_PROTO_DCCP)
  189. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_NAT_PROTO_GRE)
  190. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_NAT_PROTO_SCTP)
  191. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_NAT_PROTO_UDPLITE)
  192. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_NAT_REDIRECT)
  193. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_NAT_SIP)
  194. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_NAT_SNMP_BASIC)
  195. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_NAT_TFTP)
  196. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_REJECT_IPV4)
  197. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_REJECT_IPV6)
  198. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_SOCKET_IPV4)
  199. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_SOCKET_IPV6)
  200. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_TABLES_ARP)
  201. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_TABLES_BRIDGE)
  202. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_TABLES_IPV4)
  203. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_TABLES_IPV6)
  204. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_TABLES_NETDEV)
  205. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_TABLES_SET)
  206. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_TPROXY_IPV4)
  207. $(call KCONFIG_ENABLE_OPT,CONFIG_NF_TPROXY_IPV6)
  208. $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_BRIDGE_REJECT)
  209. $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_CHAIN_NAT_IPV4)
  210. $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_CHAIN_NAT_IPV6)
  211. $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_CHAIN_ROUTE_IPV4)
  212. $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_CHAIN_ROUTE_IPV6)
  213. $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_COMPAT)
  214. $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_CONNLIMIT)
  215. $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_COUNTER)
  216. $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_CT)
  217. $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_DUP_IPV4)
  218. $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_DUP_IPV6)
  219. $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_DUP_NETDEV)
  220. $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_FIB)
  221. $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_FIB_INET)
  222. $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_FIB_IPV4)
  223. $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_FIB_IPV6)
  224. $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_FIB_NETDEV)
  225. $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_FLOW_OFFLOAD)
  226. $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_FWD_NETDEV)
  227. $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_HASH)
  228. $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_LIMIT)
  229. $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_LOG)
  230. $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_MASQ)
  231. $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_MASQ_IPV4)
  232. $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_MASQ_IPV6)
  233. $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_NAT)
  234. $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_NUMGEN)
  235. $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_OBJREF)
  236. $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_OSF)
  237. $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_QUEUE)
  238. $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_QUOTA)
  239. $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_REDIR)
  240. $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_REDIR_IPV4)
  241. $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_REDIR_IPV6)
  242. $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_REJECT)
  243. $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_REJECT_INET)
  244. $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_REJECT_IPV4)
  245. $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_REJECT_IPV6)
  246. $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_REJECT_NETDEV)
  247. $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_SOCKET)
  248. $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_SYNPROXY)
  249. $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_TPROXY)
  250. $(call KCONFIG_ENABLE_OPT,CONFIG_NFT_TUNNEL)
  251. endef
  252. $(eval $(autotools-package))