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