3 # - update BR to real required llh version
4 # - check if kernel-headers are still required to properly build iptabels for dist kernel
5 # - fix makefile (-D_UNKNOWN_KERNEL_POINTER_SIZE issue)
6 # - owner needs rewrite to xt
9 %bcond_without doc # without documentation (HOWTOS) which needed TeX
10 %bcond_without dist_kernel # without distribution kernel
11 %bcond_with vserver # build xt_owner module for non-dist kernel with vserver support
12 %bcond_with batch # build iptables-batch
13 %bcond_with static # build static libraries, no dynamic modules (all linked into binaries)
14 %bcond_with ipt_IPV4OPTSSTRIP # enable ipt_IPV4OPTSSTRIP for non-dist kernel
15 %bcond_with ipt_rpc # enable ipt_rpc for non-dist kernel
16 %bcond_with xt_layer7 # enable xt_layer7 for non-dist kernel
17 %bcond_with usekernelsrc # include kernel headers from %{_kernelsrcdir}
19 %if %{with dist_kernel}
20 %define with_ipt_IPV4OPTSSTRIP 1
21 %define with_ipt_rpc 1
22 %define with_xt_layer7 1
23 %define with_vserver 1
26 %define name6 ip6tables
27 Summary: Extensible packet filtering system && extensible NAT system
28 Summary(pl.UTF-8): System filtrowania pakietów oraz system translacji adresów (NAT)
29 Summary(pt_BR.UTF-8): Ferramenta para controlar a filtragem de pacotes no kernel-2.6.x
30 Summary(ru.UTF-8): Утилиты для управления пакетными фильтрами ядра Linux
31 Summary(uk.UTF-8): Утиліти для керування пакетними фільтрами ядра Linux
32 Summary(zh_CN.UTF-8): Linux内核包过滤管理工具
37 Group: Networking/Admin
38 Source0: ftp://ftp.netfilter.org/pub/iptables/%{name}-%{version}.tar.bz2
39 # Source0-md5: a819199d5ec013b82da13a8ffbba857e
40 Source1: cvs://cvs.samba.org/netfilter/%{name}-howtos.tar.bz2
41 # Source1-md5: 2ed2b452daefe70ededd75dc0061fd07
43 Source3: %{name6}.init
44 Source4: %{name}.upstart
45 Source5: %{name6}.upstart
46 Source6: %{name}-config
47 Source7: %{name6}-config
48 Source8: %{name}.service
49 Source9: %{name6}.service
50 # --- GENERAL CHANGES (patches<10):
51 Patch0: %{name}-man.patch
52 # additional utils; off by default
53 Patch1: %{name}-batch.patch
54 Patch2: no-libiptc.patch
55 Patch3: %{name}-aligned_u64.patch
56 # --- ADDITIONAL/CHANGED EXTENSIONS:
57 # just ipt_IPV4OPTSSTRIP now
58 Patch10: %{name}-20070806.patch
59 # xt_layer7; almost based on iptables-1.4-for-kernel-2.6.20forward-layer7-2.18.patch
60 # http://downloads.sourceforge.net/l7-filter/netfilter-layer7-v2.18.tar.gz
61 Patch11: %{name}-layer7.patch
63 Patch12: %{name}-old-1.3.7.patch
64 # xt_IMQ; http://linuximq.net/patchs/iptables-1.4.12-IMQ-test4.diff
65 Patch13: %{name}-imq.patch
66 # enhances ipt_owner/ip6t_owner; http://people.linux-vserver.org/~dhozac/p/m/iptables-1.3.5-owner-xid.patch (currently disabled, needs update for xt_owner)
67 Patch14: %{name}-1.3.5-owner-xid.patch
68 # adjusts xt_owner for vserver-enabled kernel
69 Patch15: %{name}-owner-struct-size-vs.patch
70 # ipt_stealth; currently disabled (broken, see below)
71 Patch16: %{name}-stealth.patch
72 URL: http://www.netfilter.org/
73 BuildRequires: autoconf >= 2.50
74 BuildRequires: automake
76 BuildRequires: libnfnetlink-devel >= 1.0
77 BuildRequires: libtool
78 BuildRequires: pkgconfig >= 1:0.9.0
79 BuildRequires: rpmbuild(macros) >= 1.647
81 BuildRequires: sed >= 4.0
82 BuildRequires: sgml-tools
84 BuildRequires: tetex-dvips
85 BuildRequires: tetex-format-latex
86 BuildRequires: tetex-latex
87 BuildRequires: tetex-tex-babel
88 BuildRequires: texlive-fonts-cmsuper
89 BuildRequires: texlive-fonts-jknappen
91 %if %{with dist_kernel}
92 BuildRequires: kernel%{_alt_kernel}-headers(netfilter)
94 BuildRequires: linux-libc-headers >= 7:2.6.22.1
95 Requires: %{name}-libs = %{version}-%{release}
96 Requires: libnfnetlink >= 1.0
97 Provides: firewall-userspace-tool
99 Obsoletes: iptables24-compat
101 Conflicts: xtables-addons < 1.25
102 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
105 An extensible NAT system, and an extensible packet filtering system.
106 Replacement of ipchains in 2.4 and higher kernels.
108 %description -l pl.UTF-8
109 Wydajny system translacji adresów (NAT) oraz system filtrowania
110 pakietów. Zamiennik ipchains w jądrach 2.4 i nowszych.
112 %description -l pt_BR.UTF-8
113 Esta é a ferramenta que controla o código de filtragem de pacotes do
114 kernel 2.4, obsoletando ipchains. Com esta ferramenta você pode
115 configurar filtros de pacotes, NAT, mascaramento (masquerading),
116 regras dinâmicas (stateful inspection), etc.
118 %description -l ru.UTF-8
119 iptables управляют кодом фильтрации сетевых пакетов в ядре Linux. Они
120 позволяют вам устанавливать межсетевые экраны (firewalls) и IP
123 %description -l uk.UTF-8
124 iptables управляють кодом фільтрації пакетів мережі в ядрі Linux. Вони
125 дозволяють вам встановлювати міжмережеві екрани (firewalls) та IP
129 Summary: iptables libraries
130 Summary(pl.UTF-8): Biblioteki iptables
132 Conflicts: iptables < 1.4.3-1
137 %description libs -l pl.UTF-8
141 Summary: Libraries and headers for developing iptables extensions
142 Summary(pl.UTF-8): Biblioteki i nagłówki do tworzenia rozszerzeń iptables
143 Group: Development/Libraries
144 Requires: %{name}-libs = %{epoch}:%{version}-%{release}
145 Obsoletes: iptables24-devel
148 Libraries and headers for developing iptables extensions.
150 %description devel -l pl.UTF-8
151 Biblioteki i pliki nagłówkowe niezbędne do tworzenia rozszerzeń dla
155 Summary: Static iptables libraries
156 Summary(pl.UTF-8): Biblioteki statyczne iptables
157 Group: Development/Libraries
158 Requires: %{name}-devel = %{epoch}:%{version}-%{release}
161 Static iptables libraries.
163 %description static -l pl.UTF-8
164 Biblioteki statyczne iptables.
167 Summary: Iptables init (RedHat style)
168 Summary(pl.UTF-8): Iptables init (w stylu RedHata)
169 Group: Networking/Admin
170 Requires(post,preun): /sbin/chkconfig
171 Requires(post,preun,postun): systemd-units >= 38
173 Requires: rc-scripts >= 0.4.3.0
174 Requires: systemd-units >= 38
175 Obsoletes: firewall-init
176 Obsoletes: firewall-init-ipchains
177 Obsoletes: iptables24-init
180 Iptables-init is meant to provide an alternate way than firewall-init
181 to start and stop packet filtering through iptables(8).
183 %description init -l pl.UTF-8
184 Iptables-init ma na celu udostępnienie alternatywnego w stosunku do
185 firewall-init sposobu włączania i wyłączania filtrów IP jądra poprzez
197 %{?with_ipt_IPV4OPTSSTRIP:%patch10 -p1}
198 %{?with_xt_layer7:%patch11 -p1}
199 %{?with_ipt_rpc:%patch12 -p1}
205 # builds but init() api is broken, see warnings
215 CFLAGS="%{rpmcflags} %{rpmcppflags} -D%{!?debug:N}DEBUG" \
216 %{?with_usekernelsrc:--with-kernel=%{_kernelsrcdir}} \
218 %{?with_static:--enable-static}
224 %{__make} -j1 -C iptables-howtos
225 sed -i 's:$(HTML_HOWTOS)::g; s:$(PSUS_HOWTOS)::g' iptables-howtos/Makefile
229 rm -rf $RPM_BUILD_ROOT
230 install -d $RPM_BUILD_ROOT/etc/{rc.d/init.d,sysconfig} \
231 $RPM_BUILD_ROOT{%{_includedir},%{_libdir},%{_mandir}/man3} \
232 $RPM_BUILD_ROOT%{systemdunitdir}
235 DESTDIR=$RPM_BUILD_ROOT \
240 # upstream solution with empty library with two DT_NEEDED entries doesn't work
241 # with PLD's default LDFLAGS (--as-needed --no-copy-dt-needed-entries);
242 # use ld script instead (see no-libiptc.patch for source)
243 cp -p libiptc/libiptc.ld $RPM_BUILD_ROOT%{_libdir}/libiptc.so
245 install -p %{SOURCE2} $RPM_BUILD_ROOT/etc/rc.d/init.d/%{name}
246 install -p %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/%{name6}
247 install -d $RPM_BUILD_ROOT/etc/init
248 cp -p %{SOURCE4} $RPM_BUILD_ROOT/etc/init/%{name}.conf
249 cp -p %{SOURCE5} $RPM_BUILD_ROOT/etc/init/%{name6}.conf
251 install -p %{SOURCE6} $RPM_BUILD_ROOT/etc/sysconfig/%{name}-config
252 install -p %{SOURCE7} $RPM_BUILD_ROOT/etc/sysconfig/%{name6}-config
254 install -p %{SOURCE8} $RPM_BUILD_ROOT%{systemdunitdir}/%{name}.service
255 install -p %{SOURCE9} $RPM_BUILD_ROOT%{systemdunitdir}/%{name6}.service
258 rm -rf $RPM_BUILD_ROOT
260 %post libs -p /sbin/ldconfig
261 %postun libs -p /sbin/ldconfig
264 /sbin/chkconfig --add %{name}
265 /sbin/chkconfig --add %{name6}
266 %systemd_post %{name}.service %{name6}.service
269 if [ "$1" = "0" ]; then
270 /sbin/chkconfig --del %{name}
271 /sbin/chkconfig --del %{name6}
273 %systemd_preun %{name}.service %{name6}.service
278 %triggerpostun init -- %{name}-init < 1.4.13-2
279 %systemd_trigger %{name}.service %{name6}.service
282 %defattr(644,root,root,755)
283 %{?with_doc:%doc iptables-howtos/{NAT,networking-concepts,packet-filtering}-HOWTO*}
284 %attr(755,root,root) %{_bindir}/iptables-xml
285 %attr(755,root,root) %{_sbindir}/iptables
286 %attr(755,root,root) %{_sbindir}/iptables-restore
287 %attr(755,root,root) %{_sbindir}/iptables-save
288 %attr(755,root,root) %{_sbindir}/ip6tables
289 %attr(755,root,root) %{_sbindir}/ip6tables-restore
290 %attr(755,root,root) %{_sbindir}/ip6tables-save
292 %attr(755,root,root) %{_sbindir}/iptables-batch
293 %attr(755,root,root) %{_sbindir}/ip6tables-batch
295 %attr(755,root,root) %{_sbindir}/nfnl_osf
296 %attr(755,root,root) %{_sbindir}/xtables-multi
298 %dir %{_libdir}/xtables
299 %attr(755,root,root) %{_libdir}/xtables/libip6t_HL.so
300 %attr(755,root,root) %{_libdir}/xtables/libip6t_LOG.so
301 %attr(755,root,root) %{_libdir}/xtables/libip6t_REJECT.so
302 %attr(755,root,root) %{_libdir}/xtables/libip6t_ah.so
303 %attr(755,root,root) %{_libdir}/xtables/libip6t_dst.so
304 %attr(755,root,root) %{_libdir}/xtables/libip6t_eui64.so
305 %attr(755,root,root) %{_libdir}/xtables/libip6t_frag.so
306 %attr(755,root,root) %{_libdir}/xtables/libip6t_hbh.so
307 %attr(755,root,root) %{_libdir}/xtables/libip6t_hl.so
308 %attr(755,root,root) %{_libdir}/xtables/libip6t_icmp6.so
309 %attr(755,root,root) %{_libdir}/xtables/libip6t_ipv6header.so
310 %attr(755,root,root) %{_libdir}/xtables/libip6t_mh.so
311 %attr(755,root,root) %{_libdir}/xtables/libip6t_rt.so
312 %attr(755,root,root) %{_libdir}/xtables/libipt_CLUSTERIP.so
313 %attr(755,root,root) %{_libdir}/xtables/libipt_DNAT.so
314 %attr(755,root,root) %{_libdir}/xtables/libipt_ECN.so
315 %attr(755,root,root) %{_libdir}/xtables/libipt_LOG.so
316 %attr(755,root,root) %{_libdir}/xtables/libipt_MASQUERADE.so
317 %attr(755,root,root) %{_libdir}/xtables/libipt_MIRROR.so
318 %attr(755,root,root) %{_libdir}/xtables/libipt_NETMAP.so
319 %attr(755,root,root) %{_libdir}/xtables/libipt_REDIRECT.so
320 %attr(755,root,root) %{_libdir}/xtables/libipt_REJECT.so
321 %attr(755,root,root) %{_libdir}/xtables/libipt_SAME.so
322 %attr(755,root,root) %{_libdir}/xtables/libipt_SNAT.so
323 %attr(755,root,root) %{_libdir}/xtables/libipt_TTL.so
324 %attr(755,root,root) %{_libdir}/xtables/libipt_ULOG.so
325 %attr(755,root,root) %{_libdir}/xtables/libipt_ah.so
326 %attr(755,root,root) %{_libdir}/xtables/libipt_icmp.so
327 %attr(755,root,root) %{_libdir}/xtables/libipt_realm.so
328 # disabled, see above
329 #%attr(755,root,root) %{_libdir}/xtables/libipt_stealth.so
330 %attr(755,root,root) %{_libdir}/xtables/libipt_ttl.so
331 %attr(755,root,root) %{_libdir}/xtables/libipt_unclean.so
332 %attr(755,root,root) %{_libdir}/xtables/libip6t_DNAT.so
333 %attr(755,root,root) %{_libdir}/xtables/libip6t_DNPT.so
334 %attr(755,root,root) %{_libdir}/xtables/libip6t_MASQUERADE.so
335 %attr(755,root,root) %{_libdir}/xtables/libip6t_NETMAP.so
336 %attr(755,root,root) %{_libdir}/xtables/libip6t_REDIRECT.so
337 %attr(755,root,root) %{_libdir}/xtables/libip6t_SNAT.so
338 %attr(755,root,root) %{_libdir}/xtables/libip6t_SNPT.so
339 %attr(755,root,root) %{_libdir}/xtables/libxt_AUDIT.so
340 %attr(755,root,root) %{_libdir}/xtables/libxt_CHECKSUM.so
341 %attr(755,root,root) %{_libdir}/xtables/libxt_CLASSIFY.so
342 %attr(755,root,root) %{_libdir}/xtables/libxt_CONNMARK.so
343 %attr(755,root,root) %{_libdir}/xtables/libxt_CONNSECMARK.so
344 %attr(755,root,root) %{_libdir}/xtables/libxt_CT.so
345 %attr(755,root,root) %{_libdir}/xtables/libxt_DSCP.so
346 %attr(755,root,root) %{_libdir}/xtables/libxt_HMARK.so
347 %attr(755,root,root) %{_libdir}/xtables/libxt_IDLETIMER.so
348 %attr(755,root,root) %{_libdir}/xtables/libxt_IMQ.so
349 %attr(755,root,root) %{_libdir}/xtables/libxt_LED.so
350 %attr(755,root,root) %{_libdir}/xtables/libxt_MARK.so
351 %attr(755,root,root) %{_libdir}/xtables/libxt_NFLOG.so
352 %attr(755,root,root) %{_libdir}/xtables/libxt_NFQUEUE.so
353 %attr(755,root,root) %{_libdir}/xtables/libxt_NOTRACK.so
354 %attr(755,root,root) %{_libdir}/xtables/libxt_RATEEST.so
355 %attr(755,root,root) %{_libdir}/xtables/libxt_SECMARK.so
356 %attr(755,root,root) %{_libdir}/xtables/libxt_SET.so
357 %attr(755,root,root) %{_libdir}/xtables/libxt_TCPMSS.so
358 %attr(755,root,root) %{_libdir}/xtables/libxt_TCPOPTSTRIP.so
359 %attr(755,root,root) %{_libdir}/xtables/libxt_TEE.so
360 %attr(755,root,root) %{_libdir}/xtables/libxt_TOS.so
361 %attr(755,root,root) %{_libdir}/xtables/libxt_TPROXY.so
362 %attr(755,root,root) %{_libdir}/xtables/libxt_TRACE.so
363 %attr(755,root,root) %{_libdir}/xtables/libxt_addrtype.so
364 %attr(755,root,root) %{_libdir}/xtables/libxt_cluster.so
365 %attr(755,root,root) %{_libdir}/xtables/libxt_comment.so
366 %attr(755,root,root) %{_libdir}/xtables/libxt_connbytes.so
367 %attr(755,root,root) %{_libdir}/xtables/libxt_connlimit.so
368 %attr(755,root,root) %{_libdir}/xtables/libxt_connmark.so
369 %attr(755,root,root) %{_libdir}/xtables/libxt_conntrack.so
370 %attr(755,root,root) %{_libdir}/xtables/libxt_cpu.so
371 %attr(755,root,root) %{_libdir}/xtables/libxt_dccp.so
372 %attr(755,root,root) %{_libdir}/xtables/libxt_devgroup.so
373 %attr(755,root,root) %{_libdir}/xtables/libxt_dscp.so
374 %attr(755,root,root) %{_libdir}/xtables/libxt_ecn.so
375 %attr(755,root,root) %{_libdir}/xtables/libxt_esp.so
376 %attr(755,root,root) %{_libdir}/xtables/libxt_hashlimit.so
377 %attr(755,root,root) %{_libdir}/xtables/libxt_helper.so
378 %attr(755,root,root) %{_libdir}/xtables/libxt_iprange.so
379 %attr(755,root,root) %{_libdir}/xtables/libxt_ipvs.so
380 %attr(755,root,root) %{_libdir}/xtables/libxt_length.so
381 %attr(755,root,root) %{_libdir}/xtables/libxt_limit.so
382 %attr(755,root,root) %{_libdir}/xtables/libxt_mac.so
383 %attr(755,root,root) %{_libdir}/xtables/libxt_mark.so
384 %attr(755,root,root) %{_libdir}/xtables/libxt_multiport.so
385 %attr(755,root,root) %{_libdir}/xtables/libxt_nfacct.so
386 %attr(755,root,root) %{_libdir}/xtables/libxt_osf.so
387 %attr(755,root,root) %{_libdir}/xtables/libxt_owner.so
388 %attr(755,root,root) %{_libdir}/xtables/libxt_physdev.so
389 %attr(755,root,root) %{_libdir}/xtables/libxt_pkttype.so
390 %attr(755,root,root) %{_libdir}/xtables/libxt_policy.so
391 %attr(755,root,root) %{_libdir}/xtables/libxt_quota.so
392 %attr(755,root,root) %{_libdir}/xtables/libxt_rateest.so
393 %attr(755,root,root) %{_libdir}/xtables/libxt_recent.so
394 %attr(755,root,root) %{_libdir}/xtables/libxt_rpfilter.so
395 %attr(755,root,root) %{_libdir}/xtables/libxt_sctp.so
396 %attr(755,root,root) %{_libdir}/xtables/libxt_set.so
397 %attr(755,root,root) %{_libdir}/xtables/libxt_socket.so
398 %attr(755,root,root) %{_libdir}/xtables/libxt_standard.so
399 %attr(755,root,root) %{_libdir}/xtables/libxt_state.so
400 %attr(755,root,root) %{_libdir}/xtables/libxt_statistic.so
401 %attr(755,root,root) %{_libdir}/xtables/libxt_string.so
402 %attr(755,root,root) %{_libdir}/xtables/libxt_tcp.so
403 %attr(755,root,root) %{_libdir}/xtables/libxt_tcpmss.so
404 %attr(755,root,root) %{_libdir}/xtables/libxt_time.so
405 %attr(755,root,root) %{_libdir}/xtables/libxt_tos.so
406 %attr(755,root,root) %{_libdir}/xtables/libxt_u32.so
407 %attr(755,root,root) %{_libdir}/xtables/libxt_udp.so
408 %{?with_ipt_IPV4OPTSSTRIP:%attr(755,root,root) %{_libdir}/xtables/libipt_IPV4OPTSSTRIP.so}
409 %{?with_ipt_rpc:%attr(755,root,root) %{_libdir}/xtables/libipt_rpc.so}
410 %{?with_xt_layer7:%attr(755,root,root) %{_libdir}/xtables/libxt_layer7.so}
411 %{_mandir}/man1/iptables-xml.1*
412 %{_mandir}/man8/ip6tables.8*
413 %{_mandir}/man8/ip6tables-restore.8*
414 %{_mandir}/man8/ip6tables-save.8*
415 %{_mandir}/man8/iptables.8*
416 %{_mandir}/man8/iptables-extensions.8*
417 %{_mandir}/man8/iptables-restore.8*
418 %{_mandir}/man8/iptables-save.8*
421 %defattr(644,root,root,755)
422 %attr(755,root,root) %{_libdir}/libip4tc.so.*.*.*
423 %attr(755,root,root) %ghost %{_libdir}/libip4tc.so.0
424 %attr(755,root,root) %{_libdir}/libip6tc.so.*.*.*
425 %attr(755,root,root) %ghost %{_libdir}/libip6tc.so.0
426 %attr(755,root,root) %{_libdir}/libipq.so.*.*.*
427 %attr(755,root,root) %ghost %{_libdir}/libipq.so.0
428 %attr(755,root,root) %{_libdir}/libxtables.so.*.*.*
429 %attr(755,root,root) %ghost %{_libdir}/libxtables.so.10
432 %defattr(644,root,root,755)
433 %{?with_doc:%doc iptables-howtos/netfilter-hacking-HOWTO*}
434 %attr(755,root,root) %{_libdir}/libip4tc.so
435 %attr(755,root,root) %{_libdir}/libip6tc.so
436 %attr(755,root,root) %{_libdir}/libipq.so
437 %attr(755,root,root) %{_libdir}/libiptc.so
438 %attr(755,root,root) %{_libdir}/libxtables.so
439 %{_libdir}/libip4tc.la
440 %{_libdir}/libip6tc.la
442 %{_libdir}/libxtables.la
443 %{_includedir}/libipq.h
444 %{_includedir}/xtables.h
445 %{_includedir}/xtables-version.h
446 %{_includedir}/libiptc
447 %{_pkgconfigdir}/libip4tc.pc
448 %{_pkgconfigdir}/libip6tc.pc
449 %{_pkgconfigdir}/libipq.pc
450 %{_pkgconfigdir}/libiptc.pc
451 %{_pkgconfigdir}/xtables.pc
452 %{_mandir}/man3/ipq_*.3*
453 %{_mandir}/man3/libipq.3*
457 %defattr(644,root,root,755)
458 %{_libdir}/libip4tc.a
459 %{_libdir}/libip6tc.a
461 %{_libdir}/libxtables.a
465 %defattr(644,root,root,755)
466 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/%{name}-config
467 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/%{name6}-config
468 %attr(754,root,root) /etc/rc.d/init.d/iptables
469 %attr(754,root,root) /etc/rc.d/init.d/ip6tables
470 %config(noreplace) %verify(not md5 mtime size) /etc/init/%{name}.conf
471 %config(noreplace) %verify(not md5 mtime size) /etc/init/%{name6}.conf
472 %{systemdunitdir}/%{name}.service
473 %{systemdunitdir}/%{name6}.service