For SNAT, don't store the pre-fragment L2 header before actions are applied.
[sliver-openvswitch.git] / acinclude.m4
1 # Copyright (c) 2008 The Board of Trustees of The Leland Stanford
2 # Junior University
3 #
4 # We are making the OpenFlow specification and associated documentation
5 # (Software) available for public use and benefit with the expectation
6 # that others will use, modify and enhance the Software and contribute
7 # those enhancements back to the community. However, since we would
8 # like to make the Software available for broadest use, with as few
9 # restrictions as possible permission is hereby granted, free of
10 # charge, to any person obtaining a copy of this Software to deal in
11 # the Software under the copyrights without restriction, including
12 # without limitation the rights to use, copy, modify, merge, publish,
13 # distribute, sublicense, and/or sell copies of the Software, and to
14 # permit persons to whom the Software is furnished to do so, subject to
15 # the following conditions:
16 #
17 # The above copyright notice and this permission notice shall be
18 # included in all copies or substantial portions of the Software.
19 #
20 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 # NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
24 # BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
25 # ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
26 # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
27 # SOFTWARE.
28 #
29 # The name and trademarks of copyright holder(s) may NOT be used in
30 # advertising or publicity pertaining to the Software or any
31 # derivatives without specific, written prior permission.
32
33 dnl OFP_CHECK_LINUX(OPTION, VERSION, VARIABLE, CONDITIONAL)
34 dnl
35 dnl Configure linux kernel source tree 
36 AC_DEFUN([OFP_CHECK_LINUX], [
37   AC_ARG_WITH([$1],
38               [AC_HELP_STRING([--with-$1=/path/to/linux-$3],
39                               [Specify the linux $3 kernel sources])],
40               [path="$withval"], [path=])dnl
41   if test -n "$path"; then
42     path=`eval echo "$path"`
43
44     AC_MSG_CHECKING([for $path directory])
45     if test -d "$path"; then
46         AC_MSG_RESULT([yes])
47         $4=$path
48         AC_SUBST($4)
49     else
50         AC_MSG_RESULT([no])
51         AC_ERROR([source dir $path doesn't exist])
52     fi
53
54     AC_MSG_CHECKING([for $path kernel version])
55     version=`grep '^PATCHLEVEL = ' "$path/Makefile" | sed 's/PATCHLEVEL = '//`
56     AC_MSG_RESULT([2.$version])
57     if test "2.$version" != '$3'; then
58        AC_ERROR([Linux kernel source in $path is not version $3])
59     fi
60     if ! test -e "$path"/include/linux/version.h || \
61        ! test -e "$path"/include/linux/autoconf.h; then
62         AC_MSG_ERROR([Linux kernel source in $path is not configured])
63     fi
64   fi
65   AM_CONDITIONAL($5, test -n "$path")
66 ])
67
68 dnl Checks for --enable-hw-tables and substitutes HW_TABLES to any
69 dnl requested hardware table modules.
70 AC_DEFUN([OFP_CHECK_HWTABLES],
71   [AC_ARG_ENABLE(
72      [hw-tables],
73      [AC_HELP_STRING([--enable-hw-tables=MODULE...],
74                      [Configure and build the specified externally supplied 
75                       hardware table support modules])])
76    case "${enable_hw_tables}" in # (
77      yes) 
78        AC_MSG_ERROR([--enable-hw-tables has a required argument])
79        ;; # (
80      ''|no) 
81        hw_tables=
82        ;; # (
83      *) 
84        hw_tables=`echo "$enable_hw_tables" | sed 's/,/ /g'`
85        ;;
86    esac
87    for d in $hw_tables; do
88        mk=datapath/hwtable_$d/Modules.mk
89        if test ! -e $srcdir/$mk; then
90           AC_MSG_ERROR([--enable-hw-tables=$d specified but $mk is missing])
91        fi
92        HW_TABLES="$HW_TABLES \$(top_srcdir)/$mk"
93    done
94    AC_SUBST(HW_TABLES)])
95
96 dnl Checks for net/if_packet.h.
97 AC_DEFUN([OFP_CHECK_IF_PACKET],
98   [AC_CHECK_HEADER([net/if_packet.h],
99                    [HAVE_IF_PACKET=yes],
100                    [HAVE_IF_PACKET=no])
101    AM_CONDITIONAL([HAVE_IF_PACKET], [test "$HAVE_IF_PACKET" = yes])
102    if test "$HAVE_IF_PACKET" = yes; then
103       AC_DEFINE([HAVE_IF_PACKET], [1],
104                 [Define to 1 if net/if_packet.h is available.])
105    fi])
106
107 dnl Enable OpenFlow extension submodule.
108 AC_DEFUN([OFP_ENABLE_EXT],
109   [AC_ARG_ENABLE([ext],
110      AS_HELP_STRING([--enable-ext], 
111                     [use OpenFlow extensions
112                      (default is yes if "ext" dir exists)]))
113    case "${enable_ext}" in
114      (yes)
115        HAVE_EXT=yes
116        ;;
117      (no)
118        HAVE_EXT=no
119        ;;
120      (*)
121        if test -e "$srcdir/ext/automake.mk"; then
122          HAVE_EXT=yes
123        else
124          HAVE_EXT=no
125        fi
126        ;;
127    esac
128    if test $HAVE_EXT = yes; then
129      if test -e "$srcdir/ext/automake.mk"; then
130        :
131      else
132        AC_MSG_ERROR([cannot configure extensions without "ext" directory])
133      fi
134      AC_DEFINE([HAVE_EXT], [1], 
135                [Whether the OpenFlow extensions submodule is available])
136    fi
137    AM_CONDITIONAL([HAVE_EXT], [test $HAVE_EXT = yes])])
138
139 dnl Checks for dpkg-buildpackage.  If this is available then we check
140 dnl that the Debian packaging is functional at "make distcheck" time.
141 AC_DEFUN([OFP_CHECK_DPKG_BUILDPACKAGE],
142   [AC_CHECK_PROG([HAVE_DPKG_BUILDPACKAGE], [dpkg-buildpackage], [yes], [no])
143    AM_CONDITIONAL([HAVE_DPKG_BUILDPACKAGE], 
144                   [test $HAVE_DPKG_BUILDPACKAGE = yes])])
145