Saludos !!
Estoy empleando un código escrito en c++ cuya finalidad es agregar un filtro a una interface para bloquear paquetes TCP.
No obstante, a veces obtengo un error númerico y me gustaria obtener detalles del error. Aclaro que no sé más que lo básico de c++.
El fragmento de código que empleo es este:
PF_FILTER_DESCRIPTOR ipFlt;
ipFlt.dwFilterFlags = FD_FLAGS_NOSYN;
ipFlt.dwRule = 0;
ipFlt.pfatType = PF_IPV4;
ipFlt.dwProtocol = protocol;
ipFlt.fLateBound = 0;
ipFlt.wSrcPort = srcPort;
ipFlt.wSrcPortHighRange = srcPort;
ipFlt.wDstPort = dstPort;
ipFlt.wDstPortHighRange = dstPort;
unsigned long lIpSrc = (unsigned long)srcIp->get_Address();
unsigned long lIpDst = (unsigned long)dstIp->get_Address();
unsigned long lMaskSrc = (unsigned long)srcMask->get_Address();
unsigned long lMaskDst = (unsigned long)dstMask->get_Address();
ipFlt.SrcAddr = (PBYTE) &lIpSrc;
ipFlt.SrcMask = (PBYTE) &lMaskSrc;
ipFlt.DstAddr = (PBYTE) &lIpDst;
ipFlt.DstMask = (PBYTE) &lMaskDst;
DWORD errorCode;
// I add the filter
if(direction == 0)
errorCode = PfAddFiltersToInterface(*(intHandle->hInterface), 1, &ipFlt, 0, NULL, NULL );
else if(direction == 1)
errorCode = PfAddFiltersToInterface(*(intHandle->hInterface), 0, NULL, 1, &ipFlt, NULL );
else
return -2;
if(errorCode != NO_ERROR)
return -1;
return 0;
....
Donde la línea en rojo me da un errorCode=6
Alguien puede ayudarme? Uso Visual Studio 2003.
Gracias