]> granicus.if.org Git - ipset/commitdiff
Library map file added in order to support library versioning.
authorJozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Thu, 5 Jan 2012 10:49:26 +0000 (11:49 +0100)
committerJozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Thu, 5 Jan 2012 10:49:26 +0000 (11:49 +0100)
Make_global.am
lib/Makefile.am
lib/libipset.map [new file with mode: 0644]

index e178fe50b314e50a74aefcd970ce32315798d7c2..6275a107570f176493d796a5e8b937bef9d70f24 100644 (file)
@@ -1,7 +1,73 @@
 # This is _NOT_ the library release version, it's an API version.
 # Please read Chapter 6 "Library interface versions" of the libtool
 # documentation before making any modification
+#
 # http://sources.redhat.com/autobook/autobook/autobook_91.html
+#
+# The version scheme used by Libtool tracks interfaces, where an interface
+# is the set of exported entry points into the library. All Libtool libraries
+# start with `-version-info' set to `0:0:0' -- this will be the default
+# version number if you don't explicitly set it on the Libtool link command
+# line. The meaning of these numbers (from left to right) is as follows:
+#
+# current
+#    The number of the current interface exported by the library. A current
+#    value of `0', means that you are calling the interface exported by this
+#    library interface 0.
+#
+# revision
+#    The implementation number of the most recent interface exported by this
+#    library. In this case, a revision value of `0' means that this is the 
+#    first implementation of the interface.
+#
+#    If the next release of this library exports the same interface, but has
+#    a different implementation (perhaps some bugs have been fixed), the
+#    revision number will be higher, but current number will be the same.
+#    In that case, when given a choice, the library with the highest revision
+#    will always be used by the runtime loader.
+#
+# age
+#    The number of previous additional interfaces supported by this library.
+#    If age were `2', then this library can be linked into executables which
+#    were built with a release of this library that exported the current
+#    interface number, current, or any of the previous two interfaces.
+#
+#    By definition age must be less than or equal to current. At the outset,
+#    only the first ever interface is implemented, so age can only be `0'. 
+#
+# 1. If you have changed any of the sources for this library, the revision
+#    number must be incremented.
+#    This is a new revision of the current interface.
+#
+# 2. If the interface has changed, then current must be incremented, and
+#    revision reset to `0'.
+#    This is the first revision of a new interface.
+#
+# 3. If the new interface is a superset of the previous interface (that is, 
+#    if the previous interface has not been broken by the changes in this 
+#    new release), then age must be incremented.
+#    This release is backwards compatible with the previous release.
+#
+# 4. If the new interface has removed elements with respect to the previous
+#    interface, then you have broken backward compatibility and age must be
+#    reset to `0'.
+#    This release has a new, but backwards incompatible interface.
+#
+# For example, if the next release of the library included some new commands
+# for an existing socket protocol, you would use -version-info 1:0:1.
+# This is the first revision of a new interface. This release is backwards
+# compatible with the previous release.
+#
+# Later, you implement a faster way of handling part of the algorithm at the
+# core of the library, and release it with -version-info 1:1:1. This is a new
+# revision of the current interface.
+#
+# Unfortunately the speed of your new implementation can only be fully
+# exploited by changing the API to access the structures at a lower level,
+# which breaks compatibility with the previous interface, so you release it
+# as -version-info 2:0:0. This release has a new, but backwards incompatible
+# interface. 
+
 LIBVERSION = 1:0:0
 
 AM_CPPFLAGS = $(kinclude_CFLAGS) $(all_includes) -I$(top_srcdir)/include \
index 8afe611f2be9547d9403a9fd1353baa838e67672..d4ea6d6d432d4f32cc2dc2e4f6d75b0a82f8c2c5 100644 (file)
@@ -4,7 +4,7 @@ AM_CFLAGS += ${libmnl_CFLAGS}
 
 lib_LTLIBRARIES = libipset.la
 
-libipset_la_LDFLAGS = -version-info $(LIBVERSION)
+libipset_la_LDFLAGS = -Wl,--version-script=$(top_srcdir)/lib/libipset.map -version-info $(LIBVERSION)
 libipset_la_LIBADD  = ${libmnl_LIBS}
 libipset_la_SOURCES = \
        data.c \
diff --git a/lib/libipset.map b/lib/libipset.map
new file mode 100644 (file)
index 0000000..a9f6f41
--- /dev/null
@@ -0,0 +1,112 @@
+LIBIPSET_1.0 {
+global:
+  ipset_strlcpy;
+  ipset_data_flags_test;
+  ipset_data_flags_set;
+  ipset_data_flags_unset;
+  ipset_data_ignored;
+  ipset_data_set;
+  ipset_data_get;
+  ipset_data_setname;
+  ipset_data_family;
+  ipset_data_cidr;
+  ipset_data_flags;
+  ipset_data_reset;
+  ipset_data_init;
+  ipset_data_fini;
+  ipset_data_sizeof;
+  ipset_errcode;
+  id_to_icmp;
+  icmp_to_name;
+  name_to_icmp;
+  id_to_icmpv6;
+  icmpv6_to_name;
+  name_to_icmpv6;
+  ipset_get_nlmsg_type;
+  ipset_parse_ether;
+  ipset_parse_port;
+  ipset_parse_tcpudp_port;
+  ipset_parse_tcp_port;
+  ipset_parse_single_tcp_port;
+  ipset_parse_proto;
+  ipset_parse_icmp;
+  ipset_parse_icmpv6;
+  ipset_parse_proto_port;
+  ipset_parse_family;
+  ipset_parse_ip;
+  ipset_parse_single_ip;
+  ipset_parse_net;
+  ipset_parse_range;
+  ipset_parse_netrange;
+  ipset_parse_iprange;
+  ipset_parse_ipnet;
+  ipset_parse_ip4_single6;
+  ipset_parse_ip4_net6;
+  ipset_parse_name;
+  ipset_parse_before;
+  ipset_parse_after;
+  ipset_parse_setname;
+  ipset_parse_uint32;
+  ipset_parse_uint8;
+  ipset_parse_netmask;
+  ipset_parse_flag;
+  ipset_parse_typename;
+  ipset_parse_iface;
+  ipset_parse_output;
+  ipset_parse_ignored;
+  ipset_parse_elem;
+  ipset_call_parser;
+  ipset_parse_iptimeout;
+  ipset_parse_name_compat;
+  ipset_print_ether;
+  ipset_print_family;
+  ipset_print_type;
+  ipset_print_ip;
+  ipset_print_ipaddr;
+  ipset_print_number;
+  ipset_print_name;
+  ipset_print_port;
+  ipset_print_iface;
+  ipset_print_proto;
+  ipset_print_icmp;
+  ipset_print_icmpv6;
+  ipset_print_proto_port;
+  ipset_print_flag;
+  ipset_print_elem;
+  ipset_print_data;
+  ipset_session_data;
+  ipset_session_handle;
+  ipset_saved_type;
+  ipset_session_lineno;
+  ipset_session_report;
+  ipset_session_report_reset;
+  ipset_session_error;
+  ipset_session_warning;
+  ipset_envopt_parse;
+  ipset_envopt_test;
+  ipset_session_output;
+  ipset_commit;
+  ipset_cmd;
+  ipset_session_init;
+  ipset_session_fini;
+  ipset_debug_msg;
+  ipset_cache_add;
+  ipset_cache_del;
+  ipset_cache_rename;
+  ipset_cache_swap;
+  ipset_cache_init;
+  ipset_cache_fini;
+  ipset_type_get;
+  ipset_type_check;
+  ipset_type_add;
+  ipset_types;
+  ipset_typename_resolve;
+  ipset_match_typename;
+  ipset_match_cmd;
+  ipset_match_option;
+  ipset_match_envopt;
+  ipset_shift_argv;
+  ipset_port_usage;
+  
+local: *;
+};