From: Peter Denison Date: Sat, 9 Jun 2007 13:17:46 +0000 (+0000) Subject: update iproute2 to 2.6.20-070313, and package genl utility X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=7a1b6c92a1b728f9742f6ff1f6007d770c7623db;p=librecmc%2Flibrecmc.git update iproute2 to 2.6.20-070313, and package genl utility SVN-Revision: 7540 --- diff --git a/package/iproute2/Makefile b/package/iproute2/Makefile index 600c7734cb..8828194838 100644 --- a/package/iproute2/Makefile +++ b/package/iproute2/Makefile @@ -9,12 +9,13 @@ include $(TOPDIR)/rules.mk PKG_NAME:=iproute2 -PKG_VERSION:=2.6.15-060110 +PKG_VERSION:=2.6.20-070313 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=http://developer.osdl.org/dev/iproute2/download/ -PKG_MD5SUM:=04f57a6d366d36426d276178b600f5c5 +PKG_MD5SUM:=7bc5883aadf740761fa2dd70b661e8cc +PKG_BUILD_DIR:=$(BUILD_DIR)/iproute-$(PKG_VERSION) include $(INCLUDE_DIR)/package.mk @@ -34,6 +35,11 @@ define Package/tc TITLE:=Traffic control utility endef +define Package/genl + $(call Package/iproute2/Default) + TITLE:=General netlink utility frontend +endef + define Build/Configure $(SED) "s:-O2:${TARGET_CFLAGS}:g" $(PKG_BUILD_DIR)/Makefile $(SED) "s,-I/usr/include/db3,," $(PKG_BUILD_DIR)/Makefile @@ -61,8 +67,14 @@ define Package/tc/install $(INSTALL_BIN) $(PKG_BUILD_DIR)/tc/tc $(1)/usr/sbin/ endef +define Package/genl/install + $(INSTALL_DIR) $(1)/usr/sbin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/genl/genl $(1)/usr/sbin/ +endef + $(eval $(call BuildPackage,ip)) $(eval $(call BuildPackage,tc)) +$(eval $(call BuildPackage,genl)) $(eval $(call RequireCommand,bison, \ $(PKG_NAME) requires GNU bison. \ diff --git a/package/iproute2/patches/000-debian_patches_3.patch b/package/iproute2/patches/000-debian_patches_3.patch index b57963c969..58660388d8 100644 --- a/package/iproute2/patches/000-debian_patches_3.patch +++ b/package/iproute2/patches/000-debian_patches_3.patch @@ -1,7 +1,7 @@ -Index: iproute2-2.6.15-060110/doc/ip-cref.tex +Index: iproute-2.6.20-070313/doc/ip-cref.tex =================================================================== ---- iproute2-2.6.15-060110.orig/doc/ip-cref.tex 2007-06-04 13:22:33.437771968 +0200 -+++ iproute2-2.6.15-060110/doc/ip-cref.tex 2007-06-04 13:22:33.577750688 +0200 +--- iproute-2.6.20-070313.orig/doc/ip-cref.tex 2007-06-09 13:53:56.000000000 +0100 ++++ iproute-2.6.20-070313/doc/ip-cref.tex 2007-06-09 13:53:57.000000000 +0100 @@ -1322,6 +1322,19 @@ If it is not given, Linux uses the value selected with \verb|sysctl| variable \verb|net/ipv4/tcp_reordering|. @@ -32,10 +32,10 @@ Index: iproute2-2.6.15-060110/doc/ip-cref.tex \end{thebibliography} -Index: iproute2-2.6.15-060110/doc/Makefile +Index: iproute-2.6.20-070313/doc/Makefile =================================================================== ---- iproute2-2.6.15-060110.orig/doc/Makefile 2007-06-04 13:22:33.444770904 +0200 -+++ iproute2-2.6.15-060110/doc/Makefile 2007-06-04 13:22:33.577750688 +0200 +--- iproute-2.6.20-070313.orig/doc/Makefile 2007-06-09 13:53:56.000000000 +0100 ++++ iproute-2.6.20-070313/doc/Makefile 2007-06-09 13:53:57.000000000 +0100 @@ -14,6 +14,7 @@ PAGESPERPAGE=2 @@ -67,10 +67,10 @@ Index: iproute2-2.6.15-060110/doc/Makefile clean: - rm -f *.aux *.log *.toc $(PSFILES) $(DVIFILES) *.html + rm -f *.aux *.log *.toc $(PSFILES) $(DVIFILES) *.html $(TXTFILES) -Index: iproute2-2.6.15-060110/include/linux/pkt_sched.h +Index: iproute-2.6.20-070313/include/linux/pkt_sched.h =================================================================== ---- iproute2-2.6.15-060110.orig/include/linux/pkt_sched.h 2007-06-04 13:22:33.451769840 +0200 -+++ iproute2-2.6.15-060110/include/linux/pkt_sched.h 2007-06-04 13:22:33.578750536 +0200 +--- iproute-2.6.20-070313.orig/include/linux/pkt_sched.h 2007-06-09 13:53:56.000000000 +0100 ++++ iproute-2.6.20-070313/include/linux/pkt_sched.h 2007-06-09 13:53:57.000000000 +0100 @@ -1,3 +1,409 @@ +#if 0 +#ifndef __LINUX_PKT_SCHED_H @@ -598,29 +598,20 @@ Index: iproute2-2.6.15-060110/include/linux/pkt_sched.h +}; + #endif -Index: iproute2-2.6.15-060110/ip/iproute.c +Index: iproute-2.6.20-070313/ip/iproute.c =================================================================== ---- iproute2-2.6.15-060110.orig/ip/iproute.c 2007-06-04 13:22:33.456769080 +0200 -+++ iproute2-2.6.15-060110/ip/iproute.c 2007-06-04 13:22:33.578750536 +0200 -@@ -60,7 +60,7 @@ +--- iproute-2.6.20-070313.orig/ip/iproute.c 2007-06-09 13:53:56.000000000 +0100 ++++ iproute-2.6.20-070313/ip/iproute.c 2007-06-09 13:53:57.000000000 +0100 +@@ -73,7 +73,7 @@ fprintf(stderr, "OPTIONS := FLAGS [ mtu NUMBER ] [ advmss NUMBER ]\n"); fprintf(stderr, " [ rtt NUMBER ] [ rttvar NUMBER ]\n"); - fprintf(stderr, " [ window NUMBER] [ cwnd NUMBER ] [ ssthresh NUMBER ]\n"); -- fprintf(stderr, " [ realms REALM ]\n"); -+ fprintf(stderr, " [ realms REALM ] [ hoplimit NUMBER ] [ initcwnd NUMBER ]\n"); + fprintf(stderr, " [ window NUMBER] [ cwnd NUMBER ] [ initcwnd NUMBER ]\n"); +- fprintf(stderr, " [ ssthresh NUMBER ] [ realms REALM ]\n"); ++ fprintf(stderr, " [ ssthresh NUMBER ] [ realms REALM ] [ hoplimit NUMBER ]\n"); fprintf(stderr, "TYPE := [ unicast | local | broadcast | multicast | throw |\n"); fprintf(stderr, " unreachable | prohibit | blackhole | nat ]\n"); fprintf(stderr, "TABLE_ID := [ local | main | default | all | NUMBER ]\n"); -@@ -497,6 +497,8 @@ - "cwnd", - "advmss", - "reordering", -+ "hoplimit", -+ "initcwnd", - }; - static int hz; - if (mxrta[i] == NULL) -@@ -764,6 +766,30 @@ +@@ -789,6 +789,30 @@ invarg("\"reordering\" value is invalid\n", *argv); rta_addattr32(mxrta, sizeof(mxbuf), RTAX_REORDERING, reord); #endif @@ -651,11 +642,11 @@ Index: iproute2-2.6.15-060110/ip/iproute.c } else if (strcmp(*argv, "rtt") == 0) { unsigned rtt; NEXT_ARG(); -Index: iproute2-2.6.15-060110/ip/iptunnel.c +Index: iproute-2.6.20-070313/ip/iptunnel.c =================================================================== ---- iproute2-2.6.15-060110.orig/ip/iptunnel.c 2007-06-04 13:22:33.463768016 +0200 -+++ iproute2-2.6.15-060110/ip/iptunnel.c 2007-06-04 13:22:33.579750384 +0200 -@@ -225,7 +225,7 @@ +--- iproute-2.6.20-070313.orig/ip/iptunnel.c 2007-06-09 13:53:56.000000000 +0100 ++++ iproute-2.6.20-070313/ip/iptunnel.c 2007-06-09 13:53:57.000000000 +0100 +@@ -113,7 +113,7 @@ NEXT_ARG(); p->i_flags |= GRE_KEY; if (strchr(*argv, '.')) @@ -664,20 +655,11 @@ Index: iproute2-2.6.15-060110/ip/iptunnel.c else { if (get_unsigned(&uval, *argv, 0)<0) { fprintf(stderr, "invalid value of \"ikey\"\n"); -Index: iproute2-2.6.15-060110/Makefile +Index: iproute-2.6.20-070313/Makefile =================================================================== ---- iproute2-2.6.15-060110.orig/Makefile 2007-06-04 13:22:33.468767256 +0200 -+++ iproute2-2.6.15-060110/Makefile 2007-06-04 13:22:33.579750384 +0200 -@@ -32,7 +32,7 @@ - LIBNETLINK=../lib/libnetlink.a ../lib/libutil.a - - all: Config -- @for i in $(SUBDIRS); \ -+ @set -e; for i in $(SUBDIRS); \ - do $(MAKE) $(MFLAGS) -C $$i; done - - Config: -@@ -47,7 +47,7 @@ +--- iproute-2.6.20-070313.orig/Makefile 2007-06-09 13:53:56.000000000 +0100 ++++ iproute-2.6.20-070313/Makefile 2007-06-09 13:53:57.000000000 +0100 +@@ -48,7 +48,7 @@ $(DESTDIR)$(DOCDIR)/examples install -m 0644 $(shell find examples/diffserv -maxdepth 1 -type f) \ $(DESTDIR)$(DOCDIR)/examples/diffserv @@ -686,7 +668,7 @@ Index: iproute2-2.6.15-060110/Makefile install -m 0644 $(shell find etc/iproute2 -maxdepth 1 -type f) $(DESTDIR)$(CONFDIR) install -m 0755 -d $(DESTDIR)$(MANDIR)/man8 install -m 0644 $(shell find man/man8 -maxdepth 1 -type f) $(DESTDIR)$(MANDIR)/man8 -@@ -58,7 +58,7 @@ +@@ -59,7 +59,7 @@ clean: rm -f cscope.* @@ -695,10 +677,10 @@ Index: iproute2-2.6.15-060110/Makefile do $(MAKE) $(MFLAGS) -C $$i clean; done clobber: clean -Index: iproute2-2.6.15-060110/man/man8/ip.8 +Index: iproute-2.6.20-070313/man/man8/ip.8 =================================================================== ---- iproute2-2.6.15-060110.orig/man/man8/ip.8 2007-06-04 13:22:33.473766496 +0200 -+++ iproute2-2.6.15-060110/man/man8/ip.8 2007-06-04 13:22:33.580750232 +0200 +--- iproute-2.6.20-070313.orig/man/man8/ip.8 2007-06-09 13:53:56.000000000 +0100 ++++ iproute-2.6.20-070313/man/man8/ip.8 2007-06-09 13:53:57.000000000 +0100 @@ -1808,6 +1808,8 @@ .RB "IP Command reference " ip-cref.ps .br @@ -708,10 +690,10 @@ Index: iproute2-2.6.15-060110/man/man8/ip.8 .SH AUTHOR Original Manpage by Michail Litvak -Index: iproute2-2.6.15-060110/man/man8/tc.8 +Index: iproute-2.6.20-070313/man/man8/tc.8 =================================================================== ---- iproute2-2.6.15-060110.orig/man/man8/tc.8 2007-06-04 13:22:33.481765280 +0200 -+++ iproute2-2.6.15-060110/man/man8/tc.8 2007-06-04 13:22:33.580750232 +0200 +--- iproute-2.6.20-070313.orig/man/man8/tc.8 2007-06-09 13:53:56.000000000 +0100 ++++ iproute-2.6.20-070313/man/man8/tc.8 2007-06-09 13:53:57.000000000 +0100 @@ -341,7 +341,7 @@ .BR tc-pfifo (8), .BR tc-bfifo (8), @@ -721,10 +703,10 @@ Index: iproute2-2.6.15-060110/man/man8/tc.8 .SH AUTHOR Manpage maintained by bert hubert (ahu@ds9a.nl) -Index: iproute2-2.6.15-060110/misc/Makefile +Index: iproute-2.6.20-070313/misc/Makefile =================================================================== ---- iproute2-2.6.15-060110.orig/misc/Makefile 2007-06-04 13:22:33.486764520 +0200 -+++ iproute2-2.6.15-060110/misc/Makefile 2007-06-04 13:22:33.580750232 +0200 +--- iproute-2.6.20-070313.orig/misc/Makefile 2007-06-09 13:53:56.000000000 +0100 ++++ iproute-2.6.20-070313/misc/Makefile 2007-06-09 13:53:57.000000000 +0100 @@ -1,7 +1,8 @@ SSOBJ=ss.o ssfilter.o LNSTATOBJ=lnstat.o lnstat_util.o @@ -735,10 +717,10 @@ Index: iproute2-2.6.15-060110/misc/Makefile include ../Config -Index: iproute2-2.6.15-060110/misc/netbug +Index: iproute-2.6.20-070313/misc/netbug =================================================================== ---- iproute2-2.6.15-060110.orig/misc/netbug 2007-06-04 13:22:33.492763608 +0200 -+++ iproute2-2.6.15-060110/misc/netbug 2007-06-04 13:22:33.580750232 +0200 +--- iproute-2.6.20-070313.orig/misc/netbug 2007-06-09 13:53:56.000000000 +0100 ++++ iproute-2.6.20-070313/misc/netbug 2007-06-09 13:53:57.000000000 +0100 @@ -1,23 +1,16 @@ #! /bin/bash @@ -781,10 +763,10 @@ Index: iproute2-2.6.15-060110/misc/netbug echo "Sending to <$mail>; subject is $netbug" -Index: iproute2-2.6.15-060110/tc/Makefile +Index: iproute-2.6.20-070313/tc/Makefile =================================================================== ---- iproute2-2.6.15-060110.orig/tc/Makefile 2007-06-04 13:22:33.498762696 +0200 -+++ iproute2-2.6.15-060110/tc/Makefile 2007-06-04 13:22:33.581750080 +0200 +--- iproute-2.6.20-070313.orig/tc/Makefile 2007-06-09 13:53:56.000000000 +0100 ++++ iproute-2.6.20-070313/tc/Makefile 2007-06-09 13:53:57.000000000 +0100 @@ -11,6 +11,7 @@ TCMODULES += q_prio.o TCMODULES += q_tbf.o @@ -793,10 +775,10 @@ Index: iproute2-2.6.15-060110/tc/Makefile TCMODULES += f_rsvp.o TCMODULES += f_u32.o TCMODULES += f_route.o -Index: iproute2-2.6.15-060110/tc/q_htb.c +Index: iproute-2.6.20-070313/tc/q_htb.c =================================================================== ---- iproute2-2.6.15-060110.orig/tc/q_htb.c 2007-06-04 13:22:33.503761936 +0200 -+++ iproute2-2.6.15-060110/tc/q_htb.c 2007-06-04 13:22:33.581750080 +0200 +--- iproute-2.6.20-070313.orig/tc/q_htb.c 2007-06-09 13:53:56.000000000 +0100 ++++ iproute-2.6.20-070313/tc/q_htb.c 2007-06-09 13:53:57.000000000 +0100 @@ -1,3 +1,311 @@ +#if 0 +/* @@ -1109,10 +1091,10 @@ Index: iproute2-2.6.15-060110/tc/q_htb.c /* * q_htb.c HTB. * -Index: iproute2-2.6.15-060110/tc/q_wrr.c +Index: iproute-2.6.20-070313/tc/q_wrr.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ iproute2-2.6.15-060110/tc/q_wrr.c 2007-06-04 13:22:33.582749928 +0200 ++++ iproute-2.6.20-070313/tc/q_wrr.c 2007-06-09 13:53:57.000000000 +0100 @@ -0,0 +1,322 @@ +#include +#include diff --git a/package/iproute2/patches/001-iproute2-2.6.11_Config.patch b/package/iproute2/patches/001-iproute2-2.6.11_Config.patch index ea977c19f1..d92cd7918b 100644 --- a/package/iproute2/patches/001-iproute2-2.6.11_Config.patch +++ b/package/iproute2/patches/001-iproute2-2.6.11_Config.patch @@ -1,7 +1,7 @@ -Index: iproute2-2.6.15-060110/Config +Index: iproute-2.6.20-070313/Config =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ iproute2-2.6.15-060110/Config 2007-06-04 13:22:33.920698552 +0200 ++++ iproute-2.6.20-070313/Config 2007-06-09 13:53:58.000000000 +0100 @@ -0,0 +1,4 @@ +# Fixed config to disable ATM support even if present on host system +TC_CONFIG_ATM:=n diff --git a/package/iproute2/patches/002-iproute2-ipxfrm_no_sctp.patch b/package/iproute2/patches/002-iproute2-ipxfrm_no_sctp.patch index fd7b22b437..11c1917755 100644 --- a/package/iproute2/patches/002-iproute2-ipxfrm_no_sctp.patch +++ b/package/iproute2/patches/002-iproute2-ipxfrm_no_sctp.patch @@ -1,20 +1,20 @@ -Index: iproute2-2.6.15-060110/ip/ipxfrm.c +Index: iproute-2.6.20-070313/ip/ipxfrm.c =================================================================== ---- iproute2-2.6.15-060110.orig/ip/ipxfrm.c 2007-06-04 13:22:33.399777744 +0200 -+++ iproute2-2.6.15-060110/ip/ipxfrm.c 2007-06-04 13:22:34.104670584 +0200 -@@ -444,7 +444,6 @@ +--- iproute-2.6.20-070313.orig/ip/ipxfrm.c 2007-06-09 13:53:56.000000000 +0100 ++++ iproute-2.6.20-070313/ip/ipxfrm.c 2007-06-09 13:53:59.000000000 +0100 +@@ -467,7 +467,6 @@ switch (sel->proto) { case IPPROTO_TCP: case IPPROTO_UDP: - case IPPROTO_SCTP: + case IPPROTO_DCCP: default: /* XXX */ if (sel->sport_mask) - fprintf(fp, "sport %u ", ntohs(sel->sport)); -@@ -998,7 +997,6 @@ +@@ -1107,7 +1106,6 @@ switch (sel->proto) { case IPPROTO_TCP: case IPPROTO_UDP: - case IPPROTO_SCTP: + case IPPROTO_DCCP: break; default: - fprintf(stderr, "\"sport\" and \"dport\" are invalid with proto=%s\n", strxf_proto(sel->proto)); diff --git a/package/iproute2/patches/003-iproute2-htb_overhead.patch b/package/iproute2/patches/003-iproute2-htb_overhead.patch index 5b1bdb8d86..5af1a02cba 100644 --- a/package/iproute2/patches/003-iproute2-htb_overhead.patch +++ b/package/iproute2/patches/003-iproute2-htb_overhead.patch @@ -1,7 +1,7 @@ -Index: iproute2-2.6.15-060110/tc/q_htb.c +Index: iproute-2.6.20-070313/tc/q_htb.c =================================================================== ---- iproute2-2.6.15-060110.orig/tc/q_htb.c 2007-06-04 13:22:33.581750080 +0200 -+++ iproute2-2.6.15-060110/tc/q_htb.c 2007-06-04 13:22:34.291642160 +0200 +--- iproute-2.6.20-070313.orig/tc/q_htb.c 2007-06-09 13:53:57.000000000 +0100 ++++ iproute-2.6.20-070313/tc/q_htb.c 2007-06-09 13:54:00.000000000 +0100 @@ -35,10 +35,14 @@ " default minor id of class to which unclassified packets are sent {0}\n" " r2q DRR quantums are computed as rate in Bps/r2q {10}\n" diff --git a/package/iproute2/patches/004-darwin_fixes.patch b/package/iproute2/patches/004-darwin_fixes.patch index bb2ca3fd19..3719c7eba1 100644 --- a/package/iproute2/patches/004-darwin_fixes.patch +++ b/package/iproute2/patches/004-darwin_fixes.patch @@ -1,7 +1,7 @@ -Index: iproute2-2.6.15-060110/netem/maketable.c +Index: iproute-2.6.20-070313/netem/maketable.c =================================================================== ---- iproute2-2.6.15-060110.orig/netem/maketable.c 2007-06-04 13:22:33.339786864 +0200 -+++ iproute2-2.6.15-060110/netem/maketable.c 2007-06-04 13:22:34.476614040 +0200 +--- iproute-2.6.20-070313.orig/netem/maketable.c 2007-06-09 13:53:56.000000000 +0100 ++++ iproute-2.6.20-070313/netem/maketable.c 2007-06-09 13:54:01.000000000 +0100 @@ -10,7 +10,9 @@ #include #include @@ -12,10 +12,10 @@ Index: iproute2-2.6.15-060110/netem/maketable.c #include #include #include -Index: iproute2-2.6.15-060110/netem/normal.c +Index: iproute-2.6.20-070313/netem/normal.c =================================================================== ---- iproute2-2.6.15-060110.orig/netem/normal.c 2007-06-04 13:22:33.344786104 +0200 -+++ iproute2-2.6.15-060110/netem/normal.c 2007-06-04 13:22:34.476614040 +0200 +--- iproute-2.6.20-070313.orig/netem/normal.c 2007-06-09 13:53:56.000000000 +0100 ++++ iproute-2.6.20-070313/netem/normal.c 2007-06-09 13:54:01.000000000 +0100 @@ -8,8 +8,12 @@ #include #include @@ -29,10 +29,10 @@ Index: iproute2-2.6.15-060110/netem/normal.c #define TABLESIZE 16384 #define TABLEFACTOR NETEM_DIST_SCALE -Index: iproute2-2.6.15-060110/netem/pareto.c +Index: iproute-2.6.20-070313/netem/pareto.c =================================================================== ---- iproute2-2.6.15-060110.orig/netem/pareto.c 2007-06-04 13:22:33.349785344 +0200 -+++ iproute2-2.6.15-060110/netem/pareto.c 2007-06-04 13:22:34.476614040 +0200 +--- iproute-2.6.20-070313.orig/netem/pareto.c 2007-06-09 13:53:56.000000000 +0100 ++++ iproute-2.6.20-070313/netem/pareto.c 2007-06-09 13:54:01.000000000 +0100 @@ -7,8 +7,12 @@ #include #include @@ -46,10 +46,10 @@ Index: iproute2-2.6.15-060110/netem/pareto.c static const double a=3.0; #define TABLESIZE 16384 -Index: iproute2-2.6.15-060110/netem/paretonormal.c +Index: iproute-2.6.20-070313/netem/paretonormal.c =================================================================== ---- iproute2-2.6.15-060110.orig/netem/paretonormal.c 2007-06-04 13:22:33.356784280 +0200 -+++ iproute2-2.6.15-060110/netem/paretonormal.c 2007-06-04 13:22:34.476614040 +0200 +--- iproute-2.6.20-070313.orig/netem/paretonormal.c 2007-06-09 13:53:56.000000000 +0100 ++++ iproute-2.6.20-070313/netem/paretonormal.c 2007-06-09 13:54:01.000000000 +0100 @@ -15,10 +15,13 @@ #include #include diff --git a/package/iproute2/patches/005-flex-generated.patch b/package/iproute2/patches/005-flex-generated.patch index 800c832748..8128fe66df 100644 --- a/package/iproute2/patches/005-flex-generated.patch +++ b/package/iproute2/patches/005-flex-generated.patch @@ -1,7 +1,7 @@ -Index: iproute2-2.6.15-060110/tc/emp_ematch.lex.c +Index: iproute-2.6.20-070313/tc/emp_ematch.lex.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ iproute2-2.6.15-060110/tc/emp_ematch.lex.c 2007-06-04 13:22:34.695580752 +0200 ++++ iproute-2.6.20-070313/tc/emp_ematch.lex.c 2007-06-09 13:54:02.000000000 +0100 @@ -0,0 +1,1764 @@ +#define yy_create_buffer ematch__create_buffer +#define yy_delete_buffer ematch__delete_buffer