af-packet: don't check GRO LRO on non ethernet

This way we avoid an error message when sniffing on a non Ethernet
device.
pull/1917/head
Eric Leblond 10 years ago
parent 11eb1d7c1d
commit b7bf299e3b

@ -370,9 +370,17 @@ void *ParseAFPConfig(const char *iface)
} }
} }
if (GetIfaceOffloading(iface) == 1) {
SCLogWarning(SC_ERR_AFP_CREATE, int ltype = AFPGetLinkType(iface);
"Using AF_PACKET with GRO or LRO activated can lead to capture problems"); switch (ltype) {
case LINKTYPE_ETHERNET:
if (GetIfaceOffloading(iface) == 1) {
SCLogWarning(SC_ERR_AFP_CREATE,
"Using AF_PACKET with GRO or LRO activated can lead to capture problems");
}
case -1:
default:
break;
} }
char *active_runmode = RunmodeGetActive(); char *active_runmode = RunmodeGetActive();

@ -1314,6 +1314,22 @@ static int AFPGetDevLinktype(int fd, const char *ifname)
} }
} }
int AFPGetLinkType(const char *ifname)
{
int ltype;
int fd = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
if (fd == -1) {
SCLogError(SC_ERR_AFP_CREATE, "Couldn't create a AF_PACKET socket, error %s", strerror(errno));
return LINKTYPE_RAW;
}
ltype = AFPGetDevLinktype(fd, ifname);
close(fd);
return ltype;
}
static int AFPComputeRingParams(AFPThreadVars *ptv, int order) static int AFPComputeRingParams(AFPThreadVars *ptv, int order)
{ {
/* Compute structure: /* Compute structure:

@ -132,6 +132,6 @@ void TmModuleDecodeAFPRegister (void);
TmEcode AFPPeersListInit(); TmEcode AFPPeersListInit();
TmEcode AFPPeersListCheck(); TmEcode AFPPeersListCheck();
void AFPPeersListClean(); void AFPPeersListClean();
int AFPGetLinkType(const char *ifname);
#endif /* __SOURCE_AFP_H__ */ #endif /* __SOURCE_AFP_H__ */

Loading…
Cancel
Save