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
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