dect
/
libpcap
Archived
13
0
Fork 0

Add DLT_IPV4 and DLT_IPV6.

DLT_IPV4 and DLT_IPV6 are like DLT_RAW, except that you know the version
of IP.

Also, get rid of some duplicate stuff for DLT_IPNET in savefile.c.
This commit is contained in:
Guy Harris 2010-01-04 12:06:40 -08:00
parent ded813e278
commit add31c2e28
4 changed files with 46 additions and 4 deletions

View File

@ -1155,6 +1155,8 @@ init_linktype(p)
return;
case DLT_RAW:
case DLT_IPV4:
case DLT_IPV6:
off_linktype = -1;
off_macpl = 0;
off_nl = 0;
@ -3176,6 +3178,32 @@ gen_linktype(proto)
/*NOTREACHED*/
break;
case DLT_IPV4:
/*
* Raw IPv4, so no type field.
*/
if (proto == ETHERTYPE_IP)
return gen_true(); /* always true */
/* Checking for something other than IPv4; always false */
return gen_false();
/*NOTREACHED*/
break;
case DLT_IPV6:
/*
* Raw IPv6, so no type field.
*/
#ifdef INET6
if (proto == ETHERTYPE_IPV6)
return gen_true(); /* always true */
#endif
/* Checking for something other than IPv6; always false */
return gen_false();
/*NOTREACHED*/
break;
case DLT_PPP:
case DLT_PPP_PPPD:
case DLT_PPP_SERIAL:

2
pcap.c
View File

@ -663,6 +663,8 @@ static struct dlt_choice dlt_choices[] = {
DLT_CHOICE(DLT_FC_2_WITH_FRAME_DELIMS, "Fibre Channel FC-2 with frame delimiters"),
DLT_CHOICE(DLT_IPNET, "Solaris ipnet"),
DLT_CHOICE(DLT_CAN_SOCKETCAN, "CAN-bus with SocketCAN headers"),
DLT_CHOICE(DLT_IPV4, "Raw IPv4"),
DLT_CHOICE(DLT_IPV6, "Raw IPv6"),
DLT_CHOICE_SENTINEL
};

View File

@ -953,13 +953,19 @@ struct bpf_version {
*/
#define DLT_CAN_SOCKETCAN 227
/*
* Raw IPv4/IPv6; different from DLT_RAW in that the DLT_ value specifies
* whether it's v4 or v6. Requested by Darren Reed <Darren.Reed@Sun.COM>.
*/
#define DLT_IPV4 228
#define DLT_IPV6 229
/*
* IPNET
*/
#define IPNET_OUTBOUND 1
#define IPNET_INBOUND 2
/*
* DLT and savefile link type values are split into a class and
* a member of that class. A class value of 0 indicates a regular

View File

@ -793,7 +793,12 @@ static const char rcsid[] _U_ =
*/
#define LINKTYPE_CAN_SOCKETCAN 227
#define LINKTYPE_IPNET 226
/*
* Raw IPv4/IPv6; different from DLT_RAW in that the DLT_ value specifies
* whether it's v4 or v6. Requested by Darren Reed <Darren.Reed@Sun.COM>.
*/
#define LINKTYPE_IPV4 228
#define LINKTYPE_IPV6 229
static struct linktype_map {
@ -1137,8 +1142,9 @@ static struct linktype_map {
/* CAN frames with SocketCAN headers */
{ DLT_CAN_SOCKETCAN, LINKTYPE_CAN_SOCKETCAN },
/* Solaris IPNET */
{ DLT_IPNET, LINKTYPE_IPNET },
/* Raw IPv4/IPv6 */
{ DLT_IPV4, LINKTYPE_IPV4 },
{ DLT_IPV6, LINKTYPE_IPV6 },
{ -1, -1 }
};