Ethereal-dev: [ethereal-dev] dissect PPPoE.
Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.
From: Jeff Jahr <jjahr@xxxxxxxxxxxxxx>
Date: Tue, 8 Jun 1999 14:11:25 -0700 (PDT)
I'm attaching Ethereal diffs and the file packet-pppoe.c . They allow Ethereal to decode the PPPoE protocol as described in RFC 2516, "A Method for Transmitting PPP Over Ethernet (PPPoE)". After I wrote the PPPoE decoder, I realized that the PPP dissection routine already in ethereal could not be called with an offset. Rather than change the interface to dissect_ppp(), I copied the routine to dissect_payload_ppp() where I added the offset parameter that I needed and removed the decodes for the ppp_addr and ppp_ctl fields. In addition to dissect_payload_ppp, I added the dissection routines dissect_pppoed, dissect_pppoes, dissect_pppoe_tags, dissect_lcp, and dissect_ipcp. The lcp and ipcp dissection routines are not complete in that the lcp/ipcp option dissections haven't been written yet, but given the recent interest in decoding encapsulated PPP I'm guessing that someone will write those soon. Merging dissect_payload_ppp and dissect_ppp back into a single dissect_ppp routine is another bit that should probably happen. The unified diffs are between cvs and my local source tree which was last updated on May 18th. -jsj
/* packet-arp.c
* Routines for ARP packet disassembly
*
* $Id: packet-arp.c,v 1.12 1999/03/23 03:14:35 gram Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@xxxxxxxx>
* Copyright 1998 Gerald Combs
*
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#ifdef HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
#include <glib.h>
#include "packet.h"
#include "etypes.h"
/* For lack of a better source, I made up the following defines. -jsj */
#define PPPOE_CODE_SESSION 0x00
#define PPPOE_CODE_PADO 0x7
#define PPPOE_CODE_PADI 0x9
#define PPPOE_CODE_PADR 0x19
#define PPPOE_CODE_PADS 0x65
#define PPPOE_CODE_PADT 0xa7
#define PPPOE_TAG_EOL 0x0000
#define PPPOE_TAG_SVC_NAME 0x0101
#define PPPOE_TAG_AC_NAME 0x0102
#define PPPOE_TAG_HOST_UNIQ 0x0103
#define PPPOE_TAG_AC_COOKIE 0x0104
#define PPPOE_TAG_VENDOR 0x0105
#define PPPOE_TAG_RELAY_ID 0x0110
#define PPPOE_TAG_SVC_ERR 0x0201
#define PPPOE_TAG_AC_ERR 0x0202
#define PPPOE_TAG_GENERIC_ERR 0x0203
gchar *
pppoecode_to_str(guint8 codetype, const char *fmt) {
static const value_string code_vals[] = {
{PPPOE_CODE_SESSION, "Session Data" },
{PPPOE_CODE_PADO, "Active Discovery Offer (PADO)" },
{PPPOE_CODE_PADI, "Active Discovery Initiation (PADI)" },
{PPPOE_CODE_PADR, "Active Discovery Request (PADR)" },
{PPPOE_CODE_PADS, "Active Discovery Session-confirmation (PADS)"},
{PPPOE_CODE_PADT, "Active Discovery Terminate (PADT)" },
{0, NULL } };
return val_to_str(codetype, code_vals, fmt);
}
gchar *
pppoetag_to_str(guint16 tag_type, const char *fmt) {
static const value_string code_vals[] = {
{PPPOE_TAG_EOL, "End-Of-List" },
{PPPOE_TAG_SVC_NAME, "Service-Name" },
{PPPOE_TAG_AC_NAME, "AC-Name" },
{PPPOE_TAG_HOST_UNIQ, "Host-Uniq" },
{PPPOE_TAG_AC_COOKIE, "AC-Cookie" },
{PPPOE_TAG_VENDOR, "Vendor-Specific" },
{PPPOE_TAG_RELAY_ID, "Relay-Session-Id" },
{PPPOE_TAG_SVC_ERR, "Service-Name-Error"},
{PPPOE_TAG_AC_ERR, "AC-System-Error" },
{PPPOE_TAG_GENERIC_ERR,"Generic-Error" },
{0, NULL } };
return val_to_str(tag_type, code_vals, fmt);
}
void
dissect_pppoe_tags(const u_char *pd, int offset, frame_data *fd, proto_tree *tree, int payload_length) {
guint16 poe_tag;
guint16 poe_tag_length;
int tagstart;
proto_tree *pppoe_tree;
proto_item *ti;
/* Start Decoding Here. */
if (tree) {
ti = proto_tree_add_item(tree,offset,payload_length,"PPPoE Tags");
pppoe_tree = proto_tree_new();
proto_item_add_subtree(ti, pppoe_tree, ETT_PPPOED_TAGS);
tagstart = offset;
while(tagstart <= payload_length-2 ) {
poe_tag = pntohs(&pd[tagstart]);
poe_tag_length = pntohs(&pd[tagstart + 2]);
proto_tree_add_item(pppoe_tree,tagstart,4,
"Tag: %s", pppoetag_to_str(poe_tag,"Unknown (0x%02x)"));
switch(poe_tag) {
case PPPOE_TAG_SVC_NAME:
case PPPOE_TAG_AC_NAME:
case PPPOE_TAG_SVC_ERR:
case PPPOE_TAG_AC_ERR:
case PPPOE_TAG_GENERIC_ERR:
/* tag value should be interpreted as a utf-8 unterminated string.*/
if(poe_tag_length > 0 ) {
/* really should do some limit checking here. :( */
proto_tree_add_item(pppoe_tree,tagstart+4,poe_tag_length,
" String Data: %s", format_text(&pd[tagstart+4],poe_tag_length ));
}
break;
default:
if(poe_tag_length > 0 ) {
proto_tree_add_item(pppoe_tree,tagstart+4,poe_tag_length,
" Binary Data: (%d bytes)", poe_tag_length );
}
}
if (poe_tag == PPPOE_TAG_EOL) break;
tagstart += 4 + poe_tag_length;
}
}
}
void
dissect_pppoed(const u_char *pd, int offset, frame_data *fd, proto_tree *tree) {
guint8 pppoe_ver;
guint8 pppoe_type;
guint8 pppoe_code;
guint16 pppoe_session_id;
guint16 pppoe_length;
proto_tree *pppoe_tree;
proto_item *ti;
/* Start Decoding Here. */
pppoe_ver = (guint8) ((pd[offset] >> 4) & 0x0f);
pppoe_type = (guint8) (pd[offset] & 0x0f);
pppoe_code = (guint8) pd[offset + 1];
pppoe_session_id = pntohs(&pd[offset + 2]);
pppoe_length = pntohs(&pd[offset + 4]);
if (check_col(fd, COL_PROTOCOL)) {
col_add_str(fd,COL_PROTOCOL, "PPPoED");
}
if (check_col(fd,COL_INFO)) {
col_add_fstr(fd,COL_INFO,pppoecode_to_str(pppoe_code,"Unknown code (0x%02x)"));
}
if (tree) {
ti = proto_tree_add_item(tree,offset,pppoe_length+6,"PPPoE Discovery");
pppoe_tree = proto_tree_new();
proto_item_add_subtree(ti, pppoe_tree, ETT_PPPOED);
proto_tree_add_item(pppoe_tree,offset,1,
"Version: %d", pppoe_ver);
proto_tree_add_item(pppoe_tree,offset,1,
"Type: %d", pppoe_type);
proto_tree_add_item(pppoe_tree,offset+1,1,
"Code: %s", pppoecode_to_str(pppoe_code,"Unknown (0x%02x)"));
proto_tree_add_item(pppoe_tree,offset+2,2,
"Session ID: %04x", pppoe_session_id);
proto_tree_add_item(pppoe_tree,offset+4,2,
"Payload Length: %d", pppoe_length);
}
dissect_pppoe_tags(pd,offset+6,fd,tree,offset+6+pppoe_length);
}
void
dissect_pppoes(const u_char *pd, int offset, frame_data *fd, proto_tree *tree) {
guint8 pppoe_ver;
guint8 pppoe_type;
guint8 pppoe_code;
guint16 pppoe_session_id;
guint16 pppoe_length;
proto_tree *pppoe_tree;
proto_item *ti;
/* Start Decoding Here. */
pppoe_ver = (guint8) ((pd[offset] >> 4) & 0x0f);
pppoe_type = (guint8) (pd[offset] & 0x0f);
pppoe_code = (guint8) pd[offset + 1];
pppoe_session_id = pntohs(&pd[offset + 2]);
pppoe_length = pntohs(&pd[offset + 4]);
if (check_col(fd, COL_PROTOCOL)) {
col_add_str(fd,COL_PROTOCOL, "PPPoES");
}
if (check_col(fd,COL_INFO)) {
col_add_fstr(fd,COL_INFO,pppoecode_to_str(pppoe_code,"Unknown code (0x%02x)"));
}
if (tree) {
ti = proto_tree_add_item(tree,offset,pppoe_length+6,"PPPoE Session");
pppoe_tree = proto_tree_new();
proto_item_add_subtree(ti, pppoe_tree, ETT_PPPOED);
proto_tree_add_item(pppoe_tree,offset,1,
"Version: %d", pppoe_ver);
proto_tree_add_item(pppoe_tree,offset,1,
"Type: %d", pppoe_type);
proto_tree_add_item(pppoe_tree,offset+1,1,
"Code: %s", pppoecode_to_str(pppoe_code,"Unknown (0x%02x)"));
proto_tree_add_item(pppoe_tree,offset+2,2,
"Session ID: %04x", pppoe_session_id);
proto_tree_add_item(pppoe_tree,offset+4,2,
"Payload Length: %d", pppoe_length);
}
/* dissect_ppp is apparently done as a 'top level' dissector,
* so this doesn't work:
* dissect_ppp(pd,offset+6,fd,tree);
* Im gonna try fudging it.
*/
dissect_payload_ppp(pd,offset+6,fd,tree);
}
? rdps
? config.log
? config.h
? config.cache
? config.status
? stamp-h
? Makefile
? .deps
? ps.c
? ethereal.1
? packet-pppoe.c
? cs.out
Index: Makefile.am
===================================================================
RCS file: /cvsroot/ethereal/Makefile.am,v
retrieving revision 1.29
diff -u -r1.29 Makefile.am
--- Makefile.am 1999/05/16 04:27:08 1.29
+++ Makefile.am 1999/06/08 20:30:31
@@ -59,6 +59,7 @@
packet-ospf.h \
packet-pop.c \
packet-ppp.c \
+ packet-pppoe.c \
packet-raw.c \
packet-rip.c \
packet-rip.h \
Index: Makefile.in
===================================================================
RCS file: /cvsroot/ethereal/Makefile.in,v
retrieving revision 1.35
diff -u -r1.35 Makefile.in
--- Makefile.in 1999/05/16 04:27:08 1.35
+++ Makefile.in 1999/06/08 20:30:32
@@ -135,6 +135,7 @@
packet-ospf.h \
packet-pop.c \
packet-ppp.c \
+ packet-pppoe.c \
packet-raw.c \
packet-rip.c \
packet-rip.h \
@@ -207,9 +208,10 @@
packet-icmpv6.o packet-ip.o packet-ipsec.o packet-ipv6.o packet-ipx.o \
packet-llc.o packet-lpd.o packet-nbipx.o packet-nbns.o packet-ncp.o \
packet-nntp.o packet-null.o packet-osi.o packet-ospf.o packet-pop.o \
-packet-ppp.o packet-raw.o packet-rip.o packet-smb.o packet-tcp.o \
-packet-telnet.o packet-tftp.o packet-tr.o packet-trmac.o packet-udp.o \
-packet-vines.o packet.o prefs.o print.o ps.o resolv.o util.o
+packet-ppp.o packet-pppoe.o packet-raw.o packet-rip.o packet-smb.o \
+packet-tcp.o packet-telnet.o packet-tftp.o packet-tr.o packet-trmac.o \
+packet-udp.o packet-vines.o packet.o prefs.o print.o ps.o resolv.o \
+util.o
ethereal_LDFLAGS =
CFLAGS = @CFLAGS@
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
@@ -241,12 +243,12 @@
.deps/packet-llc.P .deps/packet-lpd.P .deps/packet-nbipx.P \
.deps/packet-nbns.P .deps/packet-ncp.P .deps/packet-nntp.P \
.deps/packet-null.P .deps/packet-osi.P .deps/packet-ospf.P \
-.deps/packet-pop.P .deps/packet-ppp.P .deps/packet-raw.P \
-.deps/packet-rip.P .deps/packet-smb.P .deps/packet-snmp.P \
-.deps/packet-tcp.P .deps/packet-telnet.P .deps/packet-tftp.P \
-.deps/packet-tr.P .deps/packet-trmac.P .deps/packet-udp.P \
-.deps/packet-vines.P .deps/packet.P .deps/prefs.P .deps/print.P \
-.deps/ps.P .deps/resolv.P .deps/snprintf.P .deps/util.P
+.deps/packet-pop.P .deps/packet-ppp.P .deps/packet-pppoe.P \
+.deps/packet-raw.P .deps/packet-rip.P .deps/packet-smb.P \
+.deps/packet-snmp.P .deps/packet-tcp.P .deps/packet-telnet.P \
+.deps/packet-tftp.P .deps/packet-tr.P .deps/packet-trmac.P \
+.deps/packet-udp.P .deps/packet-vines.P .deps/packet.P .deps/prefs.P \
+.deps/print.P .deps/ps.P .deps/resolv.P .deps/snprintf.P .deps/util.P
SOURCES = $(ethereal_SOURCES) $(EXTRA_ethereal_SOURCES)
OBJECTS = $(ethereal_OBJECTS)
Index: aclocal.m4
===================================================================
RCS file: /cvsroot/ethereal/aclocal.m4,v
retrieving revision 1.9
diff -u -r1.9 aclocal.m4
--- aclocal.m4 1999/05/01 05:19:22 1.9
+++ aclocal.m4 1999/06/08 20:30:32
@@ -1,7 +1,7 @@
-dnl aclocal.m4 generated automatically by aclocal 1.4
+dnl aclocal.m4 generated automatically by aclocal 1.3
-dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
+dnl Copyright (C) 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+dnl This Makefile.in is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -182,7 +182,7 @@
dnl AM_INIT_AUTOMAKE(package,version, [no-define])
AC_DEFUN(AM_INIT_AUTOMAKE,
-[AC_REQUIRE([AC_PROG_INSTALL])
+[AC_REQUIRE([AM_PROG_INSTALL])
PACKAGE=[$1]
AC_SUBST(PACKAGE)
VERSION=[$2]
@@ -192,8 +192,8 @@
AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
fi
ifelse([$3],,
-AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
-AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package]))
+AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
+AC_DEFINE_UNQUOTED(VERSION, "$VERSION"))
AC_REQUIRE([AM_SANITY_CHECK])
AC_REQUIRE([AC_ARG_PROGRAM])
dnl FIXME This is truly gross.
@@ -205,6 +205,15 @@
AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
AC_REQUIRE([AC_PROG_MAKE_SET])])
+
+# serial 1
+
+AC_DEFUN(AM_PROG_INSTALL,
+[AC_REQUIRE([AC_PROG_INSTALL])
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
+AC_SUBST(INSTALL_SCRIPT)dnl
+])
+
#
# Check to make sure that the build environment is sane.
#
@@ -267,7 +276,7 @@
# Configure paths for GTK+
# Owen Taylor 97-11-3
-dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
+dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS
dnl
AC_DEFUN(AM_PATH_GTK,
@@ -281,15 +290,6 @@
AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
, enable_gtktest=yes)
- for module in . $4
- do
- case "$module" in
- gthread)
- gtk_config_args="$gtk_config_args gthread"
- ;;
- esac
- done
-
if test x$gtk_config_exec_prefix != x ; then
gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
if test x${GTK_CONFIG+set} != xset ; then
@@ -322,7 +322,7 @@
ac_save_CFLAGS="$CFLAGS"
ac_save_LIBS="$LIBS"
CFLAGS="$CFLAGS $GTK_CFLAGS"
- LIBS="$GTK_LIBS $LIBS"
+ LIBS="$LIBS $GTK_LIBS"
dnl
dnl Now check if the installed GTK is sufficiently new. (Also sanity
dnl checks the results of gtk-config to some extent
@@ -331,7 +331,6 @@
AC_TRY_RUN([
#include <gtk/gtk.h>
#include <stdio.h>
-#include <stdlib.h>
int
main ()
@@ -364,17 +363,6 @@
printf("*** to point to the correct copy of gtk-config, and remove the file config.cache\n");
printf("*** before re-running configure\n");
}
-#if defined (GTK_MAJOR_VERSION) && defined (GTK_MINOR_VERSION) && defined (GTK_MICRO_VERSION)
- else if ((gtk_major_version != GTK_MAJOR_VERSION) ||
- (gtk_minor_version != GTK_MINOR_VERSION) ||
- (gtk_micro_version != GTK_MICRO_VERSION))
- {
- printf("*** GTK+ header files (version %d.%d.%d) do not match\n",
- GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION);
- printf("*** library (version %d.%d.%d)\n",
- gtk_major_version, gtk_minor_version, gtk_micro_version);
- }
-#endif /* defined (GTK_MAJOR_VERSION) ... */
else
{
if ((gtk_major_version > major) ||
Index: config.h.in
===================================================================
RCS file: /cvsroot/ethereal/config.h.in,v
retrieving revision 1.14
diff -u -r1.14 config.h.in
--- config.h.in 1999/05/12 05:56:40 1.14
+++ config.h.in 1999/06/08 20:30:32
@@ -7,6 +7,10 @@
byte first (like Motorola and SPARC, unlike Intel and VAX). */
#undef WORDS_BIGENDIAN
+#undef PACKAGE
+
+#undef VERSION
+
#undef HAVE_SA_LEN
#undef DATAFILE_DIR
@@ -48,10 +52,3 @@
/* Define if you have the pcap library (-lpcap). */
#undef HAVE_LIBPCAP
-
-/* Name of package */
-#undef PACKAGE
-
-/* Version number of package */
-#undef VERSION
-
Index: configure
===================================================================
RCS file: /cvsroot/ethereal/configure,v
retrieving revision 1.22
diff -u -r1.22 configure
--- configure 1999/05/12 05:56:40 1.22
+++ configure 1999/06/08 20:30:34
@@ -1,7 +1,7 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated automatically using autoconf version 2.13
+# Generated automatically using autoconf version 2.12
# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
#
# This configure script is free software; the Free Software Foundation
@@ -62,7 +62,6 @@
# Initialize some other variables.
subdirs=
MFLAGS= MAKEFLAGS=
-SHELL=${CONFIG_SHELL-/bin/sh}
# Maximum number of lines to put in a shell here document.
ac_max_here_lines=12
@@ -346,7 +345,7 @@
verbose=yes ;;
-version | --version | --versio | --versi | --vers)
- echo "configure generated by autoconf version 2.13"
+ echo "configure generated by autoconf version 2.12"
exit 0 ;;
-with-* | --with-*)
@@ -516,11 +515,9 @@
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
ac_cpp='$CPP $CPPFLAGS'
ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
cross_compiling=$ac_cv_prog_cc_cross
-ac_exeext=
-ac_objext=o
if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
# Stardent Vistra SVR4 grep lacks -e, says ghazi@xxxxxxxxxxxxxxxx.
if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
@@ -561,30 +558,28 @@
# SunOS /usr/etc/install
# IRIX /sbin/install
# AIX /bin/install
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
# AFS /usr/afsws/bin/install, which mishandles nonexistent args
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh.
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:570: checking for a BSD compatible install" >&5
+echo "configure:566: checking for a BSD compatible install" >&5
if test -z "$INSTALL"; then
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
- IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":"
+ IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="${IFS}:"
for ac_dir in $PATH; do
# Account for people who put trailing slashes in PATH elements.
case "$ac_dir/" in
/|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
*)
# OSF1 and SCO ODT 3.0 have their own names for install.
- # Don't use installbsd from OSF since it installs stuff as root
- # by default.
- for ac_prog in ginstall scoinst install; do
+ for ac_prog in ginstall installbsd scoinst install; do
if test -f $ac_dir/$ac_prog; then
if test $ac_prog = install &&
grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
# AIX install. It has an incompatible calling convention.
+ # OSF/1 installbsd also uses dspmsg, but is usable.
:
else
ac_cv_path_install="$ac_dir/$ac_prog -c"
@@ -614,12 +609,13 @@
# It thinks the first close brace ends the variable substitution.
test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
-
test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
+
echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6
-echo "configure:623: checking whether build environment is sane" >&5
+echo "configure:619: checking whether build environment is sane" >&5
# Just in case
sleep 1
echo timestamp > conftestfile
@@ -676,7 +672,7 @@
test "$program_transform_name" = "" && program_transform_name="s,x,x,"
echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:680: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:676: checking whether ${MAKE-make} sets \${MAKE}" >&5
set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -722,7 +718,7 @@
missing_dir=`cd $ac_aux_dir && pwd`
echo $ac_n "checking for working aclocal""... $ac_c" 1>&6
-echo "configure:726: checking for working aclocal" >&5
+echo "configure:722: checking for working aclocal" >&5
# Run test in a subshell; some versions of sh will print an error if
# an executable is not found, even if stderr is redirected.
# Redirect stdin to placate older versions of autoconf. Sigh.
@@ -735,7 +731,7 @@
fi
echo $ac_n "checking for working autoconf""... $ac_c" 1>&6
-echo "configure:739: checking for working autoconf" >&5
+echo "configure:735: checking for working autoconf" >&5
# Run test in a subshell; some versions of sh will print an error if
# an executable is not found, even if stderr is redirected.
# Redirect stdin to placate older versions of autoconf. Sigh.
@@ -748,7 +744,7 @@
fi
echo $ac_n "checking for working automake""... $ac_c" 1>&6
-echo "configure:752: checking for working automake" >&5
+echo "configure:748: checking for working automake" >&5
# Run test in a subshell; some versions of sh will print an error if
# an executable is not found, even if stderr is redirected.
# Redirect stdin to placate older versions of autoconf. Sigh.
@@ -761,7 +757,7 @@
fi
echo $ac_n "checking for working autoheader""... $ac_c" 1>&6
-echo "configure:765: checking for working autoheader" >&5
+echo "configure:761: checking for working autoheader" >&5
# Run test in a subshell; some versions of sh will print an error if
# an executable is not found, even if stderr is redirected.
# Redirect stdin to placate older versions of autoconf. Sigh.
@@ -774,7 +770,7 @@
fi
echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6
-echo "configure:778: checking for working makeinfo" >&5
+echo "configure:774: checking for working makeinfo" >&5
# Run test in a subshell; some versions of sh will print an error if
# an executable is not found, even if stderr is redirected.
# Redirect stdin to placate older versions of autoconf. Sigh.
@@ -790,26 +786,26 @@
# Make sure we can run config.sub.
-if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then :
+if $ac_config_sub sun4 >/dev/null 2>&1; then :
else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
fi
echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:799: checking host system type" >&5
+echo "configure:795: checking host system type" >&5
host_alias=$host
case "$host_alias" in
NONE)
case $nonopt in
NONE)
- if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then :
+ if host_alias=`$ac_config_guess`; then :
else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; }
fi ;;
*) host_alias=$nonopt ;;
esac ;;
esac
-host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias`
+host=`$ac_config_sub $host_alias`
host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
@@ -819,16 +815,15 @@
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:823: checking for $ac_word" >&5
+echo "configure:819: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then
ac_cv_prog_CC="gcc"
@@ -849,17 +844,16 @@
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:853: checking for $ac_word" >&5
+echo "configure:848: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
ac_prog_rejected=no
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
+ for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then
if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
@@ -894,61 +888,25 @@
echo "$ac_t""no" 1>&6
fi
- if test -z "$CC"; then
- case "`uname -s`" in
- *win32* | *WIN32*)
- # Extract the first word of "cl", so it can be a program name with args.
-set dummy cl; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:904: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_CC="cl"
- break
- fi
- done
- IFS="$ac_save_ifs"
-fi
-fi
-CC="$ac_cv_prog_CC"
-if test -n "$CC"; then
- echo "$ac_t""$CC" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
- ;;
- esac
- fi
test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:936: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:896: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
ac_cpp='$CPP $CPPFLAGS'
ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
cross_compiling=$ac_cv_prog_cc_cross
-cat > conftest.$ac_ext << EOF
-
-#line 947 "configure"
+cat > conftest.$ac_ext <<EOF
+#line 906 "configure"
#include "confdefs.h"
-
main(){return(0);}
EOF
-if { (eval echo configure:952: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:910: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
ac_cv_prog_cc_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
@@ -962,24 +920,18 @@
ac_cv_prog_cc_works=no
fi
rm -fr conftest*
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
echo "$ac_t""$ac_cv_prog_cc_works" 1>&6
if test $ac_cv_prog_cc_works = no; then
{ echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:978: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:930: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:983: checking whether we are using GNU C" >&5
+echo "configure:935: checking whether we are using GNU C" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -988,7 +940,7 @@
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:992: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:944: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
@@ -999,15 +951,11 @@
if test $ac_cv_prog_gcc = yes; then
GCC=yes
-else
- GCC=
-fi
-
-ac_test_CFLAGS="${CFLAGS+set}"
-ac_save_CFLAGS="$CFLAGS"
-CFLAGS=
-echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1011: checking whether ${CC-cc} accepts -g" >&5
+ ac_test_CFLAGS="${CFLAGS+set}"
+ ac_save_CFLAGS="$CFLAGS"
+ CFLAGS=
+ echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
+echo "configure:959: checking whether ${CC-cc} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1022,35 +970,30 @@
fi
echo "$ac_t""$ac_cv_prog_cc_g" 1>&6
-if test "$ac_test_CFLAGS" = set; then
- CFLAGS="$ac_save_CFLAGS"
-elif test $ac_cv_prog_cc_g = yes; then
- if test "$GCC" = yes; then
+ if test "$ac_test_CFLAGS" = set; then
+ CFLAGS="$ac_save_CFLAGS"
+ elif test $ac_cv_prog_cc_g = yes; then
CFLAGS="-g -O2"
else
- CFLAGS="-g"
- fi
-else
- if test "$GCC" = yes; then
CFLAGS="-O2"
- else
- CFLAGS=
fi
+else
+ GCC=
+ test "${CFLAGS+set}" = set || CFLAGS="-g"
fi
# Extract the first word of "ranlib", so it can be a program name with args.
set dummy ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1045: checking for $ac_word" >&5
+echo "configure:989: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
if test -n "$RANLIB"; then
ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then
ac_cv_prog_RANLIB="ranlib"
@@ -1071,7 +1014,7 @@
# If we're running gcc, add '-Wall' to CFLAGS.
echo $ac_n "checking to see if we can add '-Wall' to CFLAGS""... $ac_c" 1>&6
-echo "configure:1075: checking to see if we can add '-Wall' to CFLAGS" >&5
+echo "configure:1018: checking to see if we can add '-Wall' to CFLAGS" >&5
if test x$GCC != x ; then
CFLAGS="-Wall $CFLAGS"
echo "$ac_t""yes" 1>&6
@@ -1097,7 +1040,7 @@
case "$host_os" in
solaris*)
echo $ac_n "checking for LD_LIBRARY_PATH""... $ac_c" 1>&6
-echo "configure:1101: checking for LD_LIBRARY_PATH" >&5
+echo "configure:1044: checking for LD_LIBRARY_PATH" >&5
if test x$LD_LIBRARY_PATH != x ; then
LIBS="$LIBS -R$LD_LIBRARY_PATH"
echo "$ac_t""yes -- added LD_LIBRARY_PATH to run-time linker path" 1>&6
@@ -1133,15 +1076,6 @@
fi
- for module in .
- do
- case "$module" in
- gthread)
- gtk_config_args="$gtk_config_args gthread"
- ;;
- esac
- done
-
if test x$gtk_config_exec_prefix != x ; then
gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
if test x${GTK_CONFIG+set} != xset ; then
@@ -1158,7 +1092,7 @@
# Extract the first word of "gtk-config", so it can be a program name with args.
set dummy gtk-config; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1162: checking for $ac_word" >&5
+echo "configure:1096: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GTK_CONFIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1166,13 +1100,9 @@
/*)
ac_cv_path_GTK_CONFIG="$GTK_CONFIG" # Let the user override the test with a path.
;;
- ?:/*)
- ac_cv_path_GTK_CONFIG="$GTK_CONFIG" # Let the user override the test with a dos path.
- ;;
*)
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then
ac_cv_path_GTK_CONFIG="$ac_dir/$ac_word"
@@ -1193,7 +1123,7 @@
min_gtk_version=1.0.0
echo $ac_n "checking for GTK - version >= $min_gtk_version""... $ac_c" 1>&6
-echo "configure:1197: checking for GTK - version >= $min_gtk_version" >&5
+echo "configure:1127: checking for GTK - version >= $min_gtk_version" >&5
no_gtk=""
if test "$GTK_CONFIG" = "no" ; then
no_gtk=yes
@@ -1210,18 +1140,17 @@
ac_save_CFLAGS="$CFLAGS"
ac_save_LIBS="$LIBS"
CFLAGS="$CFLAGS $GTK_CFLAGS"
- LIBS="$GTK_LIBS $LIBS"
+ LIBS="$LIBS $GTK_LIBS"
rm -f conf.gtktest
if test "$cross_compiling" = yes; then
echo $ac_n "cross compiling; assumed OK... $ac_c"
else
cat > conftest.$ac_ext <<EOF
-#line 1220 "configure"
+#line 1150 "configure"
#include "confdefs.h"
#include <gtk/gtk.h>
#include <stdio.h>
-#include <stdlib.h>
int
main ()
@@ -1254,17 +1183,6 @@
printf("*** to point to the correct copy of gtk-config, and remove the file config.cache\n");
printf("*** before re-running configure\n");
}
-#if defined (GTK_MAJOR_VERSION) && defined (GTK_MINOR_VERSION) && defined (GTK_MICRO_VERSION)
- else if ((gtk_major_version != GTK_MAJOR_VERSION) ||
- (gtk_minor_version != GTK_MINOR_VERSION) ||
- (gtk_micro_version != GTK_MICRO_VERSION))
- {
- printf("*** GTK+ header files (version %d.%d.%d) do not match\n",
- GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION);
- printf("*** library (version %d.%d.%d)\n",
- gtk_major_version, gtk_minor_version, gtk_micro_version);
- }
-#endif /* defined (GTK_MAJOR_VERSION) ... */
else
{
if ((gtk_major_version > major) ||
@@ -1294,7 +1212,7 @@
}
EOF
-if { (eval echo configure:1298: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1216: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
then
:
else
@@ -1328,7 +1246,7 @@
CFLAGS="$CFLAGS $GTK_CFLAGS"
LIBS="$LIBS $GTK_LIBS"
cat > conftest.$ac_ext <<EOF
-#line 1332 "configure"
+#line 1250 "configure"
#include "confdefs.h"
#include <gtk/gtk.h>
@@ -1338,7 +1256,7 @@
return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version));
; return 0; }
EOF
-if { (eval echo configure:1342: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1260: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
rm -rf conftest*
echo "*** The test program compiled, but did not run. This usually means"
echo "*** that the run-time linker is not finding GTK or finding the wrong"
@@ -1379,7 +1297,7 @@
# Evidently, some systems have pcap.h, etc. in */include/pcap
echo $ac_n "checking for extraneous pcap header directories""... $ac_c" 1>&6
-echo "configure:1383: checking for extraneous pcap header directories" >&5
+echo "configure:1301: checking for extraneous pcap header directories" >&5
found_pcap_dir=""
for pcap_dir in /usr/include/pcap /usr/local/include/pcap
do
@@ -1399,7 +1317,7 @@
# Pcap checks
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:1403: checking how to run the C preprocessor" >&5
+echo "configure:1321: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
@@ -1414,14 +1332,14 @@
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
-#line 1418 "configure"
+#line 1336 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1424: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+{ (eval echo configure:1342: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out`
if test -z "$ac_err"; then
:
else
@@ -1430,32 +1348,15 @@
cat conftest.$ac_ext >&5
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
- cat > conftest.$ac_ext <<EOF
-#line 1435 "configure"
-#include "confdefs.h"
-#include <assert.h>
-Syntax Error
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1441: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
- :
-else
- echo "$ac_err" >&5
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
-#line 1452 "configure"
+#line 1353 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1458: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+{ (eval echo configure:1359: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out`
if test -z "$ac_err"; then
:
else
@@ -1468,8 +1369,6 @@
rm -f conftest*
fi
rm -f conftest*
-fi
-rm -f conftest*
ac_cv_prog_CPP="$CPP"
fi
CPP="$ac_cv_prog_CPP"
@@ -1480,18 +1379,18 @@
ac_safe=`echo "net/bpf.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for net/bpf.h""... $ac_c" 1>&6
-echo "configure:1484: checking for net/bpf.h" >&5
+echo "configure:1383: checking for net/bpf.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1489 "configure"
+#line 1388 "configure"
#include "confdefs.h"
#include <net/bpf.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1494: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+{ (eval echo configure:1393: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out`
if test -z "$ac_err"; then
rm -rf conftest*
eval "ac_cv_header_$ac_safe=yes"
@@ -1514,18 +1413,18 @@
ac_safe=`echo "pcap.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for pcap.h""... $ac_c" 1>&6
-echo "configure:1518: checking for pcap.h" >&5
+echo "configure:1417: checking for pcap.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1523 "configure"
+#line 1422 "configure"
#include "confdefs.h"
#include <pcap.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1528: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+{ (eval echo configure:1427: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out`
if test -z "$ac_err"; then
rm -rf conftest*
eval "ac_cv_header_$ac_safe=yes"
@@ -1547,7 +1446,7 @@
fi
echo $ac_n "checking for pcap_open_offline in -lpcap""... $ac_c" 1>&6
-echo "configure:1551: checking for pcap_open_offline in -lpcap" >&5
+echo "configure:1450: checking for pcap_open_offline in -lpcap" >&5
ac_lib_var=`echo pcap'_'pcap_open_offline | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -1555,7 +1454,7 @@
ac_save_LIBS="$LIBS"
LIBS="-lpcap $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 1559 "configure"
+#line 1458 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -1566,7 +1465,7 @@
pcap_open_offline()
; return 0; }
EOF
-if { (eval echo configure:1570: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1469: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -1597,7 +1496,7 @@
# Wiretap check
echo $ac_n "checking whether to include wiretap library""... $ac_c" 1>&6
-echo "configure:1601: checking whether to include wiretap library" >&5
+echo "configure:1500: checking whether to include wiretap library" >&5
# Check whether --with-wiretap or --without-wiretap was given.
if test "${with_wiretap+set}" = set; then
withval="$with_wiretap"
@@ -1639,7 +1538,7 @@
echo $ac_n "checking whether to enable ipv6 name resolution if available""... $ac_c" 1>&6
-echo "configure:1643: checking whether to enable ipv6 name resolution if available" >&5
+echo "configure:1542: checking whether to enable ipv6 name resolution if available" >&5
if test "x$enable_ipv6" = "xno" ; then
echo "$ac_t""no" 1>&6
else
@@ -1649,12 +1548,12 @@
v6lib=none
echo $ac_n "checking ipv6 stack type""... $ac_c" 1>&6
-echo "configure:1653: checking ipv6 stack type" >&5
+echo "configure:1552: checking ipv6 stack type" >&5
for i in v6d toshiba kame inria zeta linux; do
case $i in
v6d)
cat > conftest.$ac_ext <<EOF
-#line 1658 "configure"
+#line 1557 "configure"
#include "confdefs.h"
dnl
#include </usr/local/v6/include/sys/types.h>
@@ -1674,7 +1573,7 @@
;;
toshiba)
cat > conftest.$ac_ext <<EOF
-#line 1678 "configure"
+#line 1577 "configure"
#include "confdefs.h"
dnl
#include <sys/param.h>
@@ -1694,7 +1593,7 @@
;;
kame)
cat > conftest.$ac_ext <<EOF
-#line 1698 "configure"
+#line 1597 "configure"
#include "confdefs.h"
dnl
#include <netinet/in.h>
@@ -1714,7 +1613,7 @@
;;
inria)
cat > conftest.$ac_ext <<EOF
-#line 1718 "configure"
+#line 1617 "configure"
#include "confdefs.h"
dnl
#include <netinet/in.h>
@@ -1732,7 +1631,7 @@
;;
zeta)
cat > conftest.$ac_ext <<EOF
-#line 1736 "configure"
+#line 1635 "configure"
#include "confdefs.h"
dnl
#include <sys/param.h>
@@ -1781,12 +1680,12 @@
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:1785: checking for ANSI C header files" >&5
+echo "configure:1684: checking for ANSI C header files" >&5
if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1790 "configure"
+#line 1689 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@@ -1794,8 +1693,8 @@
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1798: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+{ (eval echo configure:1697: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out`
if test -z "$ac_err"; then
rm -rf conftest*
ac_cv_header_stdc=yes
@@ -1811,7 +1710,7 @@
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 1815 "configure"
+#line 1714 "configure"
#include "confdefs.h"
#include <string.h>
EOF
@@ -1829,7 +1728,7 @@
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 1833 "configure"
+#line 1732 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@@ -1850,7 +1749,7 @@
:
else
cat > conftest.$ac_ext <<EOF
-#line 1854 "configure"
+#line 1753 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -1861,7 +1760,7 @@
exit (0); }
EOF
-if { (eval echo configure:1865: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1764: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
then
:
else
@@ -1888,18 +1787,18 @@
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1892: checking for $ac_hdr" >&5
+echo "configure:1791: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1897 "configure"
+#line 1796 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1902: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+{ (eval echo configure:1801: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out`
if test -z "$ac_err"; then
rm -rf conftest*
eval "ac_cv_header_$ac_safe=yes"
@@ -1929,18 +1828,18 @@
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1933: checking for $ac_hdr" >&5
+echo "configure:1832: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1938 "configure"
+#line 1837 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1943: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+{ (eval echo configure:1842: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out`
if test -z "$ac_err"; then
rm -rf conftest*
eval "ac_cv_header_$ac_safe=yes"
@@ -1979,7 +1878,7 @@
SNMP_A=''
SNMP_O=''
echo $ac_n "checking whether to use SNMP library if available""... $ac_c" 1>&6
-echo "configure:1983: checking whether to use SNMP library if available" >&5
+echo "configure:1882: checking whether to use SNMP library if available" >&5
if test "x$enable_snmp" = "xno" ; then
echo "$ac_t""no" 1>&6
else
@@ -1988,18 +1887,18 @@
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1992: checking for $ac_hdr" >&5
+echo "configure:1891: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1997 "configure"
+#line 1896 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2002: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+{ (eval echo configure:1901: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out`
if test -z "$ac_err"; then
rm -rf conftest*
eval "ac_cv_header_$ac_safe=yes"
@@ -2025,7 +1924,7 @@
done
echo $ac_n "checking for asn_parse_header in -lsnmp""... $ac_c" 1>&6
-echo "configure:2029: checking for asn_parse_header in -lsnmp" >&5
+echo "configure:1928: checking for asn_parse_header in -lsnmp" >&5
ac_lib_var=`echo snmp'_'asn_parse_header | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2033,7 +1932,7 @@
ac_save_LIBS="$LIBS"
LIBS="-lsnmp $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2037 "configure"
+#line 1936 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2044,7 +1943,7 @@
asn_parse_header()
; return 0; }
EOF
-if { (eval echo configure:2048: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1947: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2077,12 +1976,12 @@
# for get_interface_list().
echo $ac_n "checking for sa_len in struct sockaddr""... $ac_c" 1>&6
-echo "configure:2081: checking for sa_len in struct sockaddr" >&5
+echo "configure:1980: checking for sa_len in struct sockaddr" >&5
if eval "test \"`echo '$''{'ac_cv_ethereal_struct_sa_len'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2086 "configure"
+#line 1985 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/socket.h>
@@ -2090,7 +1989,7 @@
struct sockaddr s; s.sa_len;
; return 0; }
EOF
-if { (eval echo configure:2094: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1993: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_ethereal_struct_sa_len=yes
else
@@ -2113,14 +2012,14 @@
# We must know our byte order
echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6
-echo "configure:2117: checking whether byte ordering is bigendian" >&5
+echo "configure:2016: checking whether byte ordering is bigendian" >&5
if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_cv_c_bigendian=unknown
# See if sys/param.h defines the BYTE_ORDER macro.
cat > conftest.$ac_ext <<EOF
-#line 2124 "configure"
+#line 2023 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/param.h>
@@ -2131,11 +2030,11 @@
#endif
; return 0; }
EOF
-if { (eval echo configure:2135: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2034: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
# It does; now see whether it defined to BIG_ENDIAN or not.
cat > conftest.$ac_ext <<EOF
-#line 2139 "configure"
+#line 2038 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/param.h>
@@ -2146,7 +2045,7 @@
#endif
; return 0; }
EOF
-if { (eval echo configure:2150: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2049: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_bigendian=yes
else
@@ -2166,7 +2065,7 @@
{ echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
else
cat > conftest.$ac_ext <<EOF
-#line 2170 "configure"
+#line 2069 "configure"
#include "confdefs.h"
main () {
/* Are we little or big endian? From Harbison&Steele. */
@@ -2179,7 +2078,7 @@
exit (u.c[sizeof (long) - 1] == 1);
}
EOF
-if { (eval echo configure:2183: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2082: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
then
ac_cv_c_bigendian=no
else
@@ -2205,13 +2104,13 @@
if test $ac_cv_prog_gcc = yes; then
echo $ac_n "checking whether ${CC-cc} needs -traditional""... $ac_c" 1>&6
-echo "configure:2209: checking whether ${CC-cc} needs -traditional" >&5
+echo "configure:2108: checking whether ${CC-cc} needs -traditional" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc_traditional'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_pattern="Autoconf.*'x'"
cat > conftest.$ac_ext <<EOF
-#line 2215 "configure"
+#line 2114 "configure"
#include "confdefs.h"
#include <sgtty.h>
Autoconf TIOCGETP
@@ -2229,7 +2128,7 @@
if test $ac_cv_prog_gcc_traditional = no; then
cat > conftest.$ac_ext <<EOF
-#line 2233 "configure"
+#line 2132 "configure"
#include "confdefs.h"
#include <termio.h>
Autoconf TCGETA
@@ -2251,12 +2150,12 @@
fi
echo $ac_n "checking for socket""... $ac_c" 1>&6
-echo "configure:2255: checking for socket" >&5
+echo "configure:2154: checking for socket" >&5
if eval "test \"`echo '$''{'ac_cv_func_socket'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2260 "configure"
+#line 2159 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char socket(); below. */
@@ -2279,7 +2178,7 @@
; return 0; }
EOF
-if { (eval echo configure:2283: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2182: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
rm -rf conftest*
eval "ac_cv_func_socket=yes"
else
@@ -2305,12 +2204,12 @@
SNPRINTF_C=""
SNPRINTF_O=""
echo $ac_n "checking for snprintf""... $ac_c" 1>&6
-echo "configure:2309: checking for snprintf" >&5
+echo "configure:2208: checking for snprintf" >&5
if eval "test \"`echo '$''{'ac_cv_func_snprintf'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2314 "configure"
+#line 2213 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char snprintf(); below. */
@@ -2333,7 +2232,7 @@
; return 0; }
EOF
-if { (eval echo configure:2337: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2236: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
rm -rf conftest*
eval "ac_cv_func_snprintf=yes"
else
@@ -2393,7 +2292,7 @@
# Ultrix sh set writes to stderr and can't be redirected directly,
# and sets the high bit in the cache file unless we assign to the vars.
(set) 2>&1 |
- case `(ac_space=' '; set | grep ac_space) 2>&1` in
+ case `(ac_space=' '; set) 2>&1` in
*ac_space=\ *)
# `set' does not quote correctly, so add quotes (double-quote substitution
# turns \\\\ into \\, and sed turns \\ into \).
@@ -2460,7 +2359,7 @@
echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
-version | --version | --versio | --versi | --vers | --ver | --ve | --v)
- echo "$CONFIG_STATUS generated by autoconf version 2.13"
+ echo "$CONFIG_STATUS generated by autoconf version 2.12"
exit 0 ;;
-help | --help | --hel | --he | --h)
echo "\$ac_cs_usage"; exit 0 ;;
@@ -2480,11 +2379,9 @@
s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
$ac_vpsub
$extrasub
-s%@SHELL@%$SHELL%g
s%@CFLAGS@%$CFLAGS%g
s%@CPPFLAGS@%$CPPFLAGS%g
s%@CXXFLAGS@%$CXXFLAGS%g
-s%@FFLAGS@%$FFLAGS%g
s%@DEFS@%$DEFS%g
s%@LDFLAGS@%$LDFLAGS%g
s%@LIBS@%$LIBS%g
@@ -2504,8 +2401,8 @@
s%@infodir@%$infodir%g
s%@mandir@%$mandir%g
s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
-s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g
s%@INSTALL_DATA@%$INSTALL_DATA%g
+s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g
s%@PACKAGE@%$PACKAGE%g
s%@VERSION@%$VERSION%g
s%@ACLOCAL@%$ACLOCAL%g
Index: ethertype.c
===================================================================
RCS file: /cvsroot/ethereal/ethertype.c,v
retrieving revision 1.13
diff -u -r1.13 ethertype.c
--- ethertype.c 1999/03/23 03:14:34 1.13
+++ ethertype.c 1999/06/08 20:30:34
@@ -52,6 +52,8 @@
{ETHERTYPE_VINES, "Vines" },
{ETHERTYPE_CDP, "CDP" }, /* Cisco Discovery Protocol */
{ETHERTYPE_LOOP, "Loopback" }, /* Ethernet Loopback */
+ {ETHERTYPE_PPPOED, "PPPoE Discovery"},
+ {ETHERTYPE_PPPOES, "PPPoE Session" },
{0, NULL } };
return val_to_str(etype, etype_vals, fmt);
@@ -112,6 +114,12 @@
dissect_data(pd, offset, fd, tree);
if (check_col(fd, COL_PROTOCOL)) { col_add_fstr(fd, COL_PROTOCOL, "LOOP"); }
break;
+ case ETHERTYPE_PPPOED:
+ dissect_pppoed(pd, offset, fd, tree);
+ break;
+ case ETHERTYPE_PPPOES:
+ dissect_pppoes(pd, offset, fd, tree);
+ break;
default:
dissect_data(pd, offset, fd, tree);
if (check_col(fd, COL_PROTOCOL)) { col_add_fstr(fd, COL_PROTOCOL, "0x%04x", etype); }
Index: etypes.h
===================================================================
RCS file: /cvsroot/ethereal/etypes.h,v
retrieving revision 1.4
diff -u -r1.4 etypes.h
--- etypes.h 1998/12/19 00:12:20 1.4
+++ etypes.h 1999/06/08 20:30:34
@@ -78,4 +78,13 @@
#define ETHERTYPE_LOOP 0x9000 /* used for layer 2 testing (do i see my own frames on the wire) */
#endif
+#ifndef ETHERTYPE_PPPOED
+#define ETHERTYPE_PPPOED 0x8863 /* PPPoE Discovery Protocol */
+#endif
+
+#ifndef ETHERTYPE_PPPOES
+#define ETHERTYPE_PPPOES 0x8864 /* PPPoE Session Protocol */
+#endif
+
+
#endif /* etypes.h */
Index: packet-ppp.c
===================================================================
RCS file: /cvsroot/ethereal/packet-ppp.c,v
retrieving revision 1.10
diff -u -r1.10 packet-ppp.c
--- packet-ppp.c 1999/03/23 03:14:43 1.10
+++ packet-ppp.c 1999/06/08 20:30:35
@@ -67,6 +67,116 @@
#define PPP_CHAP 0xc223 /* Cryptographic Handshake Auth. Protocol */
#define PPP_CBCP 0xc029 /* Callback Control Protocol */
+
+static const value_string ppp_vals[] = {
+ {PPP_IP, "IP" },
+ {PPP_AT, "Appletalk" },
+ {PPP_IPX, "Netware IPX/SPX"},
+ {PPP_VJC_COMP, "VJ compressed TCP"},
+ {PPP_VJC_UNCOMP,"VJ uncompressed TCP"},
+ {PPP_VINES, "Vines" },
+ {PPP_IPV6, "IPv6" },
+ {PPP_COMP, "compressed packet" },
+ {PPP_IPCP, "IP Control Protocol" },
+ {PPP_ATCP, "AppleTalk Control Protocol" },
+ {PPP_IPXCP, "IPX Control Protocol" },
+ {PPP_CCP, "Compression Control Protocol" },
+ {PPP_LCP, "Link Control Protocol" },
+ {PPP_PAP, "Password Authentication Protocol" },
+ {PPP_LQR, "Link Quality Report protocol" },
+ {PPP_CHAP, "Cryptographic Handshake Auth. Protocol" },
+ {PPP_CBCP, "Callback Control Protocol" },
+ {0, NULL } };
+
+/* CP (LCP, IPCP, etc.) codes.
+ * from pppd fsm.h
+ */
+#define CONFREQ 1 /* Configuration Request */
+#define CONFACK 2 /* Configuration Ack */
+#define CONFNAK 3 /* Configuration Nak */
+#define CONFREJ 4 /* Configuration Reject */
+#define TERMREQ 5 /* Termination Request */
+#define TERMACK 6 /* Termination Ack */
+#define CODEREJ 7 /* Code Reject */
+
+static const value_string cp_vals[] = {
+ {CONFREQ, "Configuration Request " },
+ {CONFACK, "Configuration Ack " },
+ {CONFNAK, "Configuration Nak " },
+ {CONFREJ, "Configuration Reject " },
+ {TERMREQ, "Termination Request " },
+ {TERMACK, "Termination Ack " },
+ {CODEREJ, "Code Reject " },
+ {0, NULL } };
+
+/*
+ * LCP-specific packet types.
+ */
+#define PROTREJ 8 /* Protocol Reject */
+#define ECHOREQ 9 /* Echo Request */
+#define ECHOREP 10 /* Echo Reply */
+#define DISCREQ 11 /* Discard Request */
+#define CBCP_OPT 6 /* Use callback control protocol */
+
+static const value_string lcp_vals[] = {
+ {CONFREQ, "Configuration Request " },
+ {CONFACK, "Configuration Ack " },
+ {CONFNAK, "Configuration Nak " },
+ {CONFREJ, "Configuration Reject " },
+ {TERMREQ, "Termination Request " },
+ {TERMACK, "Termination Ack " },
+ {CODEREJ, "Code Reject " },
+ {PROTREJ, "Protocol Reject " },
+ {ECHOREQ, "Echo Request " },
+ {ECHOREP, "Echo Reply " },
+ {DISCREQ, "Discard Request " },
+ {CBCP_OPT, "Use callback control protocol" },
+ {0, NULL } };
+
+/*
+ * Options. (LCP)
+ */
+#define CI_MRU 1 /* Maximum Receive Unit */
+#define CI_ASYNCMAP 2 /* Async Control Character Map */
+#define CI_AUTHTYPE 3 /* Authentication Type */
+#define CI_QUALITY 4 /* Quality Protocol */
+#define CI_MAGICNUMBER 5 /* Magic Number */
+#define CI_PCOMPRESSION 7 /* Protocol Field Compression */
+#define CI_ACCOMPRESSION 8 /* Address/Control Field Compression */
+#define CI_CALLBACK 13 /* callback */
+
+static const value_string lcp_opt_vals[] = {
+ {CI_MRU, "Maximum Receive Unit" },
+ {CI_ASYNCMAP, "Async Control Character Map" },
+ {CI_AUTHTYPE, "Authentication Type" },
+ {CI_QUALITY, "Quality Protocol" },
+ {CI_MAGICNUMBER, "Magic Number" },
+ {CI_PCOMPRESSION, "Protocol Field Compression" },
+ {CI_ACCOMPRESSION,"Address/Control Field Compression" },
+ {CI_CALLBACK, "callback" },
+ {0, NULL } };
+
+/*
+ * Options. (IPCP)
+ */
+#define CI_ADDRS 1 /* IP Addresses */
+#define CI_COMPRESSTYPE 2 /* Compression Type */
+#define CI_ADDR 3
+#define CI_MS_DNS1 129 /* Primary DNS value */
+#define CI_MS_WINS1 130 /* Primary WINS value */
+#define CI_MS_DNS2 131 /* Secondary DNS value */
+#define CI_MS_WINS2 132 /* Secondary WINS value */
+
+static const value_string ipcp_opt_vals[] = {
+ {CI_ADDRS, "IP Addresses" },
+ {CI_COMPRESSTYPE,"Compression Type" },
+ {CI_ADDR, "Address" },
+ {CI_MS_DNS1, "Primary DNS value" },
+ {CI_MS_WINS1, "Primary WINS value" },
+ {CI_MS_DNS2, "Secondary DNS value" },
+ {CI_MS_WINS2, "Secondary WINS value" },
+ {0, NULL } };
+
void
capture_ppp( const u_char *pd, guint32 cap_len, packet_counts *ld ) {
switch (pntohs(&pd[2])) {
@@ -80,6 +190,131 @@
}
void
+dissect_ipcp( const u_char *pd, int offset, frame_data *fd, proto_tree *tree ) {
+ proto_tree *fh_tree;
+ proto_item *ti;
+
+ int ipcpcode;
+ int ipcpid;
+ int optionslength;
+
+ ipcpcode = pd[0+offset];
+ ipcpid = pd[1+offset];
+ optionslength= pntohs(&pd[2+offset]);
+
+ if(check_col(fd, COL_INFO))
+ col_add_fstr(fd, COL_INFO, "IPCP %s",
+ val_to_str(ipcpcode, cp_vals, "Unknown"));
+
+ if(tree) {
+ ti = proto_tree_add_item(tree, 0+offset, 4, "IP Control Protocol" );
+ fh_tree = proto_tree_new();
+ proto_item_add_subtree(ti, fh_tree, ETT_IPCP);
+ proto_tree_add_item(fh_tree, 0+offset, 1, "Code: %s (0x%02x)",
+ val_to_str(ipcpcode, cp_vals, "Unknown"), ipcpcode);
+ proto_tree_add_item(fh_tree, 1+offset, 1, "Identifier: 0x%02x",
+ ipcpid);
+ proto_tree_add_item(fh_tree, 2+offset, 2, "Length: %d",
+ optionslength);
+ }
+
+ switch (ipcpcode) {
+ /* decode lcp options here. */
+ default:
+ dissect_data(pd, 4+offset, fd, tree);
+ break;
+ }
+}
+
+void
+dissect_lcp( const u_char *pd, int offset, frame_data *fd, proto_tree *tree ) {
+ proto_tree *fh_tree;
+ proto_item *ti;
+
+ int lcpcode;
+ int lcpid;
+ int optionslength;
+
+ lcpcode = pd[0+offset];
+ lcpid = pd[1+offset];
+ optionslength= pntohs(&pd[2+offset]);
+
+ if(check_col(fd, COL_INFO))
+ col_add_fstr(fd, COL_INFO, "LCP %s",
+ val_to_str(lcpcode, lcp_vals, "Unknown"));
+
+ if(tree) {
+ ti = proto_tree_add_item(tree, 0+offset, 4, "Link Control Protocol" );
+ fh_tree = proto_tree_new();
+ proto_item_add_subtree(ti, fh_tree, ETT_LCP);
+ proto_tree_add_item(fh_tree, 0+offset, 1, "Code: %s (0x%02x)",
+ val_to_str(lcpcode, lcp_vals, "Unknown"), lcpcode);
+ proto_tree_add_item(fh_tree, 1+offset, 1, "Identifier: 0x%02x",
+ lcpid);
+ proto_tree_add_item(fh_tree, 2+offset, 2, "Length: %d",
+ optionslength);
+ }
+
+ switch (lcpcode) {
+ /* decode lcp options here. */
+ default:
+ dissect_data(pd, 4+offset, fd, tree);
+ break;
+ }
+}
+
+void
+dissect_payload_ppp( const u_char *pd, int offset, frame_data *fd, proto_tree *tree ) {
+ e_ppphdr ph;
+ proto_tree *fh_tree;
+ proto_item *ti;
+
+/* ph.ppp_addr = pd[0+offset]; */
+/* ph.ppp_ctl = pd[1+offset]; */
+ ph.ppp_prot = pntohs(&pd[0+offset]);
+
+ /* populate a tree in the second pane with the status of the link
+ layer (ie none) */
+ if(tree) {
+ ti = proto_tree_add_item(tree, 0+offset, 2, "Point-to-Point Protocol" );
+ fh_tree = proto_tree_new();
+ proto_item_add_subtree(ti, fh_tree, ETT_PPP);
+ proto_tree_add_item(fh_tree, 0+offset, 2, "Protocol: %s (0x%04x)",
+ val_to_str(ph.ppp_prot, ppp_vals, "Unknown"), ph.ppp_prot);
+ }
+
+ switch (ph.ppp_prot) {
+ case PPP_IP:
+ dissect_ip(pd, 2+offset, fd, tree);
+ break;
+ case PPP_AT:
+ dissect_ddp(pd, 2+offset, fd, tree);
+ break;
+ case PPP_IPX:
+ dissect_ipx(pd, 2+offset, fd, tree);
+ break;
+ case PPP_VINES:
+ dissect_vines(pd, 2+offset, fd, tree);
+ break;
+ case PPP_IPV6:
+ dissect_ipv6(pd, 2+offset, fd, tree);
+ break;
+ case PPP_LCP:
+ dissect_lcp(pd, 2+offset, fd, tree);
+ break;
+ case PPP_IPCP:
+ dissect_ipcp(pd, 2+offset, fd, tree);
+ break;
+ default:
+ dissect_data(pd, 2+offset, fd, tree);
+ if (check_col(fd, COL_INFO))
+ col_add_fstr(fd, COL_INFO, "PPP %s (0x%04x)",
+ val_to_str(ph.ppp_prot, ppp_vals, "Unknown"), ph.ppp_prot);
+ break;
+ }
+}
+
+void
dissect_ppp( const u_char *pd, frame_data *fd, proto_tree *tree ) {
e_ppphdr ph;
proto_tree *fh_tree;
@@ -99,14 +334,15 @@
/* load the top pane info. This should be overwritten by
the next protocol in the stack */
- if(check_col(fd, COL_RES_DL_SRC))
- col_add_str(fd, COL_RES_DL_SRC, "N/A" );
- if(check_col(fd, COL_RES_DL_DST))
- col_add_str(fd, COL_RES_DL_DST, "N/A" );
- if(check_col(fd, COL_PROTOCOL))
- col_add_str(fd, COL_PROTOCOL, "N/A" );
- if(check_col(fd, COL_INFO))
- col_add_str(fd, COL_INFO, "PPP" );
+
+ if(check_col(fd, COL_RES_DL_SRC))
+ col_add_str(fd, COL_RES_DL_SRC, "N/A" );
+ if(check_col(fd, COL_RES_DL_DST))
+ col_add_str(fd, COL_RES_DL_DST, "N/A" );
+ if(check_col(fd, COL_PROTOCOL))
+ col_add_str(fd, COL_PROTOCOL, "N/A" );
+ if(check_col(fd, COL_INFO))
+ col_add_str(fd, COL_INFO, "PPP" );
/* populate a tree in the second pane with the status of the link
layer (ie none) */
Index: packet.h
===================================================================
RCS file: /cvsroot/ethereal/packet.h,v
retrieving revision 1.56
diff -u -r1.56 packet.h
--- packet.h 1999/05/13 16:42:43 1.56
+++ packet.h 1999/06/08 20:30:35
@@ -236,6 +236,11 @@
ETT_SMB_CAPS,
ETT_SMB_RAWMODE,
ETT_SMB_AFLAGS,
+ ETT_PPPOED,
+ ETT_PPPOED_TAGS,
+ ETT_PPPOES,
+ ETT_LCP,
+ ETT_IPCP,
NUM_TREE_TYPES /* last item number plus one */
};
@@ -387,6 +392,7 @@
void dissect_vines_ipc(const u_char *, int, frame_data *, proto_tree *);
void dissect_vines_rtp(const u_char *, int, frame_data *, proto_tree *);
void dissect_vines_spp(const u_char *, int, frame_data *, proto_tree *);
+void dissect_payload_ppp(const u_char *, int, frame_data *, proto_tree *);
void dissect_ftp(const u_char *, int, frame_data *, proto_tree *, int);
void dissect_ftpdata(const u_char *, int, frame_data *, proto_tree *, int);
- References:
- Re: [ethereal-dev] newbie question
- From: Gilbert Ramirez
- Re: [ethereal-dev] newbie question
- Prev by Date: Re: [ethereal-dev] newbie question
- Next by Date: [ethereal-dev] Code for ISAKMP, GRE, and PPTP
- Previous by thread: Re: [ethereal-dev] newbie question
- Next by thread: [ethereal-dev] Code for ISAKMP, GRE, and PPTP
- Index(es):





