Sisyphus repository
Last update: 1 october 2023 | SRPMs: 18631 | Visits: 37559419
en ru br
ALT Linux repos
S:1.8.7-alt1
5.0: 1.4.0-alt4
4.1: 1.4.0-alt0.M41.1
4.0: 1.3.7-alt1
3.0: 1.3.1-alt2

Group :: System/Kernel and hardware
RPM: iptables

 Main   Changelog   Spec   Patches   Sources   Download   Gear   Bugs and FR  Repocop 

Patch: iptables-1.4.0-alt-shared.patch
Download


--- iptables-1.4.0/Makefile
+++ iptables-1.4.0/Makefile
@@ -102,14 +102,45 @@ default: print-extensions all
 print-extensions:
 	@[ -n "$(OPTIONALS)" ] && echo Extensions found: $(OPTIONALS)
 
+EXTRAS+=libiptables.a
+EXTRAS+=libiptables.so
+EXTRAS+=libip6tables.a
+EXTRAS+=libip6tables.so
+DEVEL_LIBS+=libiptables.a
+DEVEL_LIBS+=libiptables.so.0.0
+DEVEL_LIBS+=libip6tables.a
+DEVEL_LIBS+=libip6tables.so.0.0
+
+libiptables.a: libiptables.a(iptables.o xtables.o)
+libiptables.so: iptables_sh.o xtables_sh.o
+
+libiptables.so: libiptc/libiptc.so
+	$(CC) -shared $(EXT_LDFLAGS) -Wl,-soname,libiptables.so.0.0 -o $@.0.0 $^ \
+		libiptc/libiptc.so -ldl
+	ln -s libiptables.so.0.0 $@
+
+libip6tables.a: libip6tables.a(ip6tables.o)
+libip6tables.so: ip6tables_sh.o
+
+libip6tables.so: libiptc/libiptc.so libiptables.so
+	$(CC) -shared $(EXT_LDFLAGS) -Wl,-soname,libip6tables.so.0.0 -o $@.0.0 $^ \
+		libiptc/libiptc.so libiptables.so -ldl
+	ln -s libip6tables.so.0.0 $@
+
 iptables.o: iptables.c
 	$(CC) $(CFLAGS) -DIPT_LIB_DIR=\"$(IPT_LIBDIR)\" -c -o $@ $<
 
 ifeq ($(DO_MULTI), 1)
-iptables: iptables-multi.c iptables-save.c iptables-restore.c iptables-xml.c iptables-standalone.c iptables.o xtables.o $(STATIC_LIBS) libiptc/libiptc.a
+iptables: iptables-multi.c iptables-save.c iptables-restore.c iptables-xml.c iptables-standalone.c iptables.o $(STATIC_LIBS) libiptc/libiptc.a
 	$(CC) $(CFLAGS) -DIPTABLES_MULTI -DIPT_LIB_DIR=\"$(IPT_LIBDIR)\" $(LDFLAGS) -o $@ $^ $(LDLIBS)
 else
-iptables: iptables-standalone.c iptables.o xtables.o $(STATIC_LIBS) libiptc/libiptc.a
+xtables_sh.o: xtables.c
+	$(CC) $(SH_CFLAGS) -DIPT_LIB_DIR=\"$(IPT_LIBDIR)\" -c -o $@ $<
+
+iptables_sh.o: iptables.c
+	$(CC) $(SH_CFLAGS) -DIPT_LIB_DIR=\"$(IPT_LIBDIR)\" -c -o $@ $<
+
+iptables: iptables-standalone.c $(STATIC_LIBS) libiptables.so libiptc/libiptc.so
 	$(CC) $(CFLAGS) -DIPT_LIB_DIR=\"$(IPT_LIBDIR)\" $(LDFLAGS) -o $@ $^ $(LDLIBS)
 endif
 
@@ -117,7 +148,7 @@ $(DESTDIR)$(BINDIR)/iptables: iptables
 	@[ -d $(DESTDIR)$(BINDIR) ] || mkdir -p $(DESTDIR)$(BINDIR)
 	cp $< $@
 
-iptables-save: iptables-save.c iptables.o xtables.o $(STATIC_LIBS) libiptc/libiptc.a
+iptables-save: iptables-save.c $(STATIC_LIBS) libiptables.so libiptc/libiptc.so
 	$(CC) $(CFLAGS) -DIPT_LIB_DIR=\"$(IPT_LIBDIR)\" $(LDFLAGS) -o $@ $^ $(LDLIBS)
 
 ifeq ($(DO_MULTI), 1)
@@ -130,7 +161,7 @@ $(DESTDIR)$(BINDIR)/iptables-save: iptables-save
 	cp $< $@
 endif
 
-iptables-restore: iptables-restore.c iptables.o xtables.o $(STATIC_LIBS) libiptc/libiptc.a
+iptables-restore: iptables-restore.c $(STATIC_LIBS) libiptables.so libiptc/libiptc.so
 	$(CC) $(CFLAGS) -DIPT_LIB_DIR=\"$(IPT_LIBDIR)\" $(LDFLAGS) -o $@ $^ $(LDLIBS)
 
 ifeq ($(DO_MULTI), 1)
@@ -160,10 +191,13 @@ ip6tables.o: ip6tables.c
 	$(CC) $(CFLAGS) -DIP6T_LIB_DIR=\"$(IPT_LIBDIR)\" -c -o $@ $<
 
 ifeq ($(DO_MULTI), 1)
-ip6tables: ip6tables-multi.c ip6tables-save.c ip6tables-restore.c ip6tables-standalone.c ip6tables.o xtables.o $(STATIC6_LIBS) libiptc/libiptc.a
+ip6tables: ip6tables-multi.c ip6tables-save.c ip6tables-restore.c ip6tables-standalone.c ip6tables.o $(STATIC6_LIBS) libiptables.so libiptc/libiptc.so
 	$(CC) $(CFLAGS) -DIPTABLES_MULTI -DIP6T_LIB_DIR=\"$(IPT_LIBDIR)\" $(LDFLAGS) -o $@ $^ $(LDLIBS)
 else
-ip6tables: ip6tables-standalone.c ip6tables.o xtables.o $(STATIC6_LIBS) libiptc/libiptc.a
+ip6tables_sh.o: ip6tables.c
+	$(CC) $(SH_CFLAGS) -DIP6T_LIB_DIR=\"$(IPT_LIBDIR)\" -c -o $@ $<
+
+ip6tables: ip6tables-standalone.c $(STATIC6_LIBS) libiptables.so libip6tables.so libiptc/libiptc.so
 	$(CC) $(CFLAGS) -DIP6T_LIB_DIR=\"$(IPT_LIBDIR)\" $(LDFLAGS) -o $@ $^ $(LDLIBS)
 endif
 
@@ -171,7 +205,7 @@ $(DESTDIR)$(BINDIR)/ip6tables: ip6tables
 	@[ -d $(DESTDIR)$(BINDIR) ] || mkdir -p $(DESTDIR)$(BINDIR)
 	cp $< $@
 
-ip6tables-save: ip6tables-save.c ip6tables.o xtables.o $(STATIC6_LIBS) libiptc/libiptc.a
+ip6tables-save: ip6tables-save.c $(STATIC6_LIBS) libiptables.so libip6tables.so libiptc/libiptc.so
 	$(CC) $(CFLAGS) -DIP6T_LIB_DIR=\"$(IPT_LIBDIR)\" $(LDFLAGS) -o $@ $^ $(LDLIBS)
 
 ifeq ($(DO_MULTI), 1)
@@ -184,7 +218,7 @@ $(DESTDIR)$(BINDIR)/ip6tables-save: ip6tables-save
 	cp $< $@
 endif
 
-ip6tables-restore: ip6tables-restore.c ip6tables.o xtables.o $(STATIC6_LIBS) libiptc/libiptc.a
+ip6tables-restore: ip6tables-restore.c $(STATIC6_LIBS) libiptables.so libip6tables.so libiptc/libiptc.so
 	$(CC) $(CFLAGS) -DIP6T_LIB_DIR=\"$(IPT_LIBDIR)\" $(LDFLAGS) -o $@ $^ $(LDLIBS)
 
 ifeq ($(DO_MULTI), 1)
--- iptables-1.4.0/Rules.make
+++ iptables-1.4.0/Rules.make
@@ -30,8 +30,14 @@ $(SHARED_LIBS:%.so=%.d): %.d: %.c
 	@-$(CC) -M -MG $(CFLAGS) $< | \
 	    sed -e 's@^.*\.o:@$*.d $*_sh.o:@' > $@
 
-$(SHARED_LIBS): %.so : %_sh.o
-	$(CC) -shared $(EXT_LDFLAGS) -o $@ $<
+$(IPv4_SHARED_LIBS): %.so : %_sh.o libiptables.so
+	$(CC) -shared $(EXT_LDFLAGS) -o $@ $< -L. -liptables
+
+$(IPv6_SHARED_LIBS): %.so : %_sh.o libiptables.so libip6tables.so
+	$(CC) -shared $(EXT_LDFLAGS) -o $@ $< -L. -liptables -lip6tables
+
+$(XT_SHARED_LIBS): %.so : %_sh.o libiptables.so
+	$(CC) -shared $(EXT_LDFLAGS) -o $@ $< -L. -liptables
 
 $(SHARED_SE_LIBS:%.so=%.d): %.d: %.c
 	@-$(CC) -M -MG $(CFLAGS) $< | \
--- iptables-1.4.0/extensions/Makefile
+++ iptables-1.4.0/extensions/Makefile
@@ -128,19 +128,22 @@ OPTIONALS+=$(patsubst %,IPv4:%,$(PF_EXT_SLIB_OPTS))
 OPTIONALS+=$(patsubst %,IPv6:%,$(PF6_EXT_SLIB_OPTS))
 
 ifndef NO_SHARED_LIBS
-SHARED_LIBS+=$(foreach T,$(PF_EXT_SLIB),extensions/libipt_$(T).so)
+IPv4_SHARED_LIBS:=$(foreach T,$(PF_EXT_SLIB),extensions/libipt_$(T).so)
+SHARED_LIBS+=$(IPv4_SHARED_LIBS)
 SHARED_SE_LIBS+=$(foreach T,$(PF_EXT_SE_SLIB),extensions/libipt_$(T).so)
 EXTRA_INSTALLS+=$(foreach T, $(PF_EXT_SLIB), $(DEST_IPT_LIBDIR)/libipt_$(T).so)
 EXTRA_INSTALLS+=$(foreach T, $(PF_EXT_SE_SLIB), $(DEST_IPT_LIBDIR)/libipt_$(T).so)
 
 ifeq ($(DO_IPV6), 1)
-SHARED_LIBS+=$(foreach T,$(PF6_EXT_SLIB),extensions/libip6t_$(T).so)
+IPv6_SHARED_LIBS:=$(foreach T,$(PF6_EXT_SLIB),extensions/libip6t_$(T).so)
+SHARED_LIBS+=$(IPv6_SHARED_LIBS)
 SHARED_SE_LIBS+=$(foreach T,$(PF6_EXT_SE_SLIB),extensions/libip6t_$(T).so)
 EXTRA_INSTALLS+=$(foreach T, $(PF6_EXT_SLIB), $(DEST_IPT_LIBDIR)/libip6t_$(T).so)
 EXTRA_INSTALLS+=$(foreach T, $(PF6_EXT_SE_SLIB), $(DEST_IPT_LIBDIR)/libip6t_$(T).so)
 endif
 
-SHARED_LIBS+=$(foreach T,$(PFX_EXT_SLIB),extensions/libxt_$(T).so)
+XT_SHARED_LIBS:=$(foreach T,$(PFX_EXT_SLIB),extensions/libxt_$(T).so)
+SHARED_LIBS+=$(XT_SHARED_LIBS)
 SHARED_SE_LIBS+=$(foreach T,$(PFX_EXT_SE_SLIB),extensions/libxt_$(T).so)
 EXTRA_INSTALLS+=$(foreach T, $(PFX_EXT_SLIB), $(DEST_IPT_LIBDIR)/libxt_$(T).so)
 EXTRA_INSTALLS+=$(foreach T, $(PFX_EXT_SE_SLIB), $(DEST_IPT_LIBDIR)/libxt_$(T).so)
--- iptables-1.4.0/libipq/Makefile
+++ iptables-1.4.0/libipq/Makefile
@@ -1,6 +1,7 @@
 #! /usr/bin/make
 
 EXTRAS+=libipq/libipq.a
+EXTRAS+=libipq/libipq.so
 #CFLAGS+=-DDEBUG_LIBIPTQ
 
 DEVEL_MAN3+=libipq/ipq_create_handle.3 \
@@ -16,6 +17,7 @@ DEVEL_MAN3+=libipq/ipq_create_handle.3 \
 	libipq/libipq.3
 
 DEVEL_LIBS+=libipq/libipq.a
+DEVEL_LIBS+=libipq/libipq.so.0.0
 
 DEVEL_HEADERS+=include/libipq/libipq.h
 
@@ -24,5 +26,10 @@ local:
 	cd .. && $(MAKE) $(SHARED_LIBS) $(EXTRAS)
 else
 libipq/libipq.a: libipq/libipq.a(libipq/libipq.o)
+libipq/libipq.so: libipq/libipq_sh.o
+
+libipq/libipq.so:
+	$(CC) -shared $(EXT_LDFLAGS) -Wl,-soname,libipq.so.0.0 -o $@.0.0 $^
+	ln -s libipq.so.0.0 $@
 endif
 
--- iptables-1.4.0/libiptc/Makefile
+++ iptables-1.4.0/libiptc/Makefile
@@ -1,9 +1,12 @@
 #! /usr/bin/make
 
 EXTRAS+=libiptc/libiptc.a
+EXTRAS+=libiptc/libiptc.so
 
 # libiptc is not a public interface and therefore not installed
 # DEVEL_LIBS+=libiptc/libiptc.a
+DEVEL_LIBS+=libiptc/libiptc.a
+DEVEL_LIBS+=libiptc/libiptc.so.0.0
 
 ifndef TOPLEVEL_INCLUDED
 local:
@@ -13,12 +16,18 @@ else
 EXTRA_DEPENDS+=libiptc/libip4tc.d
 
 libiptc/libiptc.a: libiptc/libiptc.a(libiptc/libip4tc.o)
+libiptc/libiptc.so: libiptc/libip4tc_sh.o
 
 ifeq ($(DO_IPV6), 1)
 EXTRA_DEPENDS+= libiptc/libip6tc.d
 libiptc/libiptc.a: libiptc/libiptc.a(libiptc/libip6tc.o)
+libiptc/libiptc.so: libiptc/libip6tc_sh.o
 endif
 
+libiptc/libiptc.so:
+	$(CC) -shared $(EXT_LDFLAGS) -Wl,-soname,libiptc.so.0.0 -o $@.0.0 $^
+	ln -s libiptc.so.0.0 $@
+
 libiptc/libip4tc.d libiptc/libip6tc.d: %.d: %.c
 	@-$(CC) -M -MG $(CFLAGS) $< | sed -e 's@^.*\.o:@$*.d libiptc/libiptc.a($*.o):@' > $@
 endif
 
design & coding: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
current maintainer: Michael Shigorin