windivert: upgrade to 2.0.0

WinDivert 2 was released in 2019. This introduced some minimal
changes to some functions arguments.

Bug: #8138.
pull/14462/head
Ambre Iooss 5 months ago committed by Victor Julien
parent cf88ed518c
commit 3bcad5f364

@ -3326,15 +3326,15 @@ jobs:
path: prep
- name: WinDivert
run: |
curl -sL -O https://github.com/basil00/Divert/releases/download/v1.4.3/WinDivert-1.4.3-A.zip
unzip WinDivert-1.4.3-A.zip -d /windivert
cp /windivert/WinDivert-1.4.3-A/x86_64/* /usr/lib/
curl -sL -O https://github.com/basil00/Divert/releases/download/v2.2.2/WinDivert-2.2.2-A.zip
unzip WinDivert-2.2.2-A.zip -d /windivert
cp /windivert/WinDivert-2.2.2-A/x64/* /usr/lib/
# hack: place dlls in cwd
cp /windivert/WinDivert-1.4.3-A/x86_64/*.dll .
cp /windivert/WinDivert-2.2.2-A/x64/*.dll .
- name: Build
run: |
./autogen.sh
CFLAGS="-ggdb -Werror" ./configure --enable-warnings --enable-gccprotect --disable-gccmarch-native --disable-shared --enable-windivert --with-windivert-include=/windivert/WinDivert-1.4.3-A/include --with-windivert-libraries=/windivert/WinDivert-1.4.3-A/x86_64
CFLAGS="-ggdb -Werror" ./configure --enable-warnings --enable-gccprotect --disable-gccmarch-native --disable-shared --enable-windivert --with-windivert-include=/windivert/WinDivert-2.2.2-A/include --with-windivert-libraries=/windivert/WinDivert-2.2.2-A/x64
make -j3
- name: Run
run: |

@ -264,8 +264,7 @@ int WinDivertRegisterQueue(bool forward, char *filter_str)
/* validate the filter string */
const char *error_str;
uint32_t error_pos;
bool valid = WinDivertHelperCheckFilter(filter_str, layer, &error_str,
&error_pos);
bool valid = WinDivertHelperCompileFilter(filter_str, layer, 0, 0, &error_str, &error_pos);
if (!valid) {
SCLogWarning("Invalid filter \"%s\" supplied to WinDivert: %s at position "
"%" PRId32 "",
@ -457,13 +456,11 @@ static TmEcode WinDivertRecvHelper(ThreadVars *tv, WinDivertThreadVars *wd_tv)
/* allocate external, if not already */
PacketCallocExtPkt(p, MAX_PAYLOAD_SIZE);
success =
WinDivertRecv(wd_tv->filter_handle, p->ext_pkt,
MAX_PAYLOAD_SIZE, &p->windivert_v.addr, &pktlen);
success = WinDivertRecv(
wd_tv->filter_handle, p->ext_pkt, MAX_PAYLOAD_SIZE, &pktlen, &p->windivert_v.addr);
} else {
success = WinDivertRecv(wd_tv->filter_handle, GET_PKT_DIRECT_DATA(p),
GET_PKT_DIRECT_MAX_SIZE(p),
&p->windivert_v.addr, &pktlen);
GET_PKT_DIRECT_MAX_SIZE(p), &pktlen, &p->windivert_v.addr);
}
SET_PKT_LEN(p, pktlen);
@ -630,12 +627,11 @@ static bool WinDivertIfaceMatchFilter(const char *filter_string, int if_index)
bool match = false;
WINDIVERT_ADDRESS if_addr = {};
if_addr.IfIdx = if_index;
if_addr.Network.IfIdx = if_index;
uint8_t dummy[4] = {4, 4, 4, 4};
match = WinDivertHelperEvalFilter(filter_string, WINDIVERT_LAYER_NETWORK,
dummy, sizeof(dummy), &if_addr);
match = WinDivertHelperEvalFilter(filter_string, dummy, sizeof(dummy), &if_addr);
if (!match) {
int err = GetLastError();
if (err != 0) {
@ -795,8 +791,8 @@ static TmEcode WinDivertVerdictHelper(ThreadVars *tv, Packet *p)
SCReturnInt(TM_ECODE_OK);
}
bool success = WinDivertSend(wd_tv->filter_handle, GET_PKT_DATA(p),
GET_PKT_LEN(p), &p->windivert_v.addr, NULL);
bool success = WinDivertSend(
wd_tv->filter_handle, GET_PKT_DATA(p), GET_PKT_LEN(p), NULL, &p->windivert_v.addr);
if (unlikely(!success)) {
WinDivertLogError(GetLastError());

Loading…
Cancel
Save