Unfortunately, it only works in one 11.10 case, and doesn't work for others. For libnl-3 case,
...
checking for library containing genl_connect...no
...

I checked the libnl-genl-3.so was install under /lib/i386-linux-gnu/ (12.10) or /lib/libnl-genl-3.0 (12.04) and I am sure it included genl_connect, but now seemed AC_SEARCH_LIBS cannot find it at all. 

But with some changes on above 1108 patch like:
from
+PKG_CHECK_MODULES([LIBNL], [libnl-3.0 >= 3.0 libnl-genl-3.0 >= 3.0], [has_libnl_ver=3], [
+       PKG_CHECK_MODULES([LIBNL], [libnl-2.0 >= 2.0 libnl-genl-2.0 >= 2.0], [has_libnl_ver=2], [
+               PKG_CHECK_MODULES([LIBNL], [libnl-1], [has_libnl_ver=1], [])])])

to 
+PKG_CHECK_MODULES([LIBNL], [libnl-3.0 >= 3.0 libnl-genl-3.0 >= 3.0], [has_libnl_ver=3], [
+       PKG_CHECK_MODULES([LIBNL], [libnl-2.0], [has_libnl_ver=2], [
+               PKG_CHECK_MODULES([LIBNL], [libnl-1], [has_libnl_ver=1], [])])])
 
Don't check  libnl-genl-2.0 >= 2.0 ( as patch in 1108) and don't use AC_SEARCH_LIBS (as patch in above last one) at all.
Now, it works in 11.10/12.04/12.10 for all libnl-3/libnl2/libnl.


2012/11/12 Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Hello,
may I ask you ti test the following one?


Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>

---

 configure.ac | 21 +++++++++++++--------
 1 file changed, 13 insertions(+), 8 deletions(-)

diff --git a/configure.ac b/configure.ac
index b8c183f..cee5bf3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -54,15 +54,20 @@ PKG_CHECK_MODULES([PCIUTILS], [libpci],[has_libpci=1],[


 has_libnl_ver=0
-PKG_CHECK_MODULES([LIBNL], [libnl-3.0 libnl-genl-3.0], [
-       has_libnl_ver=3], [
-       AC_SEARCH_LIBS([nl_socket_alloc], [nl-3 nl-genl-3], [
-               has_libnl_ver=3], [
-               AC_SEARCH_LIBS([nl_socket_alloc], [nl], [
-                       has_libnl_ver=2], [
-                       PKG_CHECK_MODULES([LIBNL], [libnl-1], [has_libnl_ver=1], [])])])])
+
+PKG_CHECK_MODULES([LIBNL], [libnl-3.0 >= 3.0], [has_libnl_ver=3], [
+       PKG_CHECK_MODULES([LIBNL], [libnl-2.0 >= 2.0], [has_libnl_ver=2], [
+               PKG_CHECK_MODULES([LIBNL], [libnl-1.0], [has_libnl_ver=1], [has_libnl_ver=0])])])
+
+#Austin Zhang reported failed configure on Ubuntu. It tourned out that ubuntu does
+#not provide genl pkg-config files, thus PKG_CHECK_MODULES fails to check for
+#libnl-genl.
+#NOTE: AC_SEARCH_LIBS append -lnl-genl to LIBS, not to LIBNL_LIBS.
+#
+AC_SEARCH_LIBS([genl_connect], [nl-genl], [], [has_libnl_ver=0])
+
 if (test "$has_libnl_ver" -eq 0); then
-       AC_MSG_ERROR(libnl is required but not found)
+       AC_MSG_ERROR(libnl and libnl-genl are required but were not found)
 fi
 if (test "$has_libnl_ver" -gt 1); then
        AC_DEFINE([HAVE_LIBNL20], [1], [Define if you have libnl-2.0 or higher])