Added the ability to pause and resume the network thread's reception.

This commit is contained in:
OBattler
2019-11-14 20:59:51 +01:00
parent 6cb88c27bd
commit 9912cc10fe
4 changed files with 24 additions and 10 deletions

View File

@@ -8,11 +8,11 @@
* *
* Handle WinPcap library processing. * Handle WinPcap library processing.
* *
* Version: @(#)net_pcap.c 1.0.9 2018/10/19 * Version: @(#)net_pcap.c 1.0.10 2019/11/14
* *
* Author: Fred N. van Kempen, <decwiz@yahoo.com> * Author: Fred N. van Kempen, <decwiz@yahoo.com>
* *
* Copyright 2017,2018 Fred N. van Kempen. * Copyright 2017-2019 Fred N. van Kempen.
* *
* Redistribution and use in source and binary forms, with * Redistribution and use in source and binary forms, with
* or without modification, are permitted provided that the * or without modification, are permitted provided that the
@@ -185,7 +185,10 @@ poll_thread(void *arg)
if (pcap == NULL) break; if (pcap == NULL) break;
/* Wait for the next packet to arrive. */ /* Wait for the next packet to arrive. */
data = (uint8_t *)f_pcap_next((void *)pcap, &h); if (network_wait)
data = NULL;
else
data = (uint8_t *)f_pcap_next((void *)pcap, &h);
if (data != NULL) { if (data != NULL) {
// ui_sb_update_icon(SB_NETWORK, 1); // ui_sb_update_icon(SB_NETWORK, 1);

View File

@@ -8,11 +8,11 @@
* *
* Handle SLiRP library processing. * Handle SLiRP library processing.
* *
* Version: @(#)net_slirp.c 1.0.8 2018/10/19 * Version: @(#)net_slirp.c 1.0.9 2019/11/14
* *
* Author: Fred N. van Kempen, <decwiz@yahoo.com> * Author: Fred N. van Kempen, <decwiz@yahoo.com>
* *
* Copyright 2017,2018 Fred N. van Kempen. * Copyright 2017-2019 Fred N. van Kempen.
* *
* Redistribution and use in source and binary forms, with * Redistribution and use in source and binary forms, with
* or without modification, are permitted provided that the * or without modification, are permitted provided that the
@@ -148,7 +148,7 @@ poll_thread(void *arg)
/* Wait for the next packet to arrive. */ /* Wait for the next packet to arrive. */
data_valid = 0; data_valid = 0;
if (QueuePeek(slirpq) != 0) { if (!network_wait && (QueuePeek(slirpq) != 0)) {
/* Grab a packet from the queue. */ /* Grab a packet from the queue. */
// ui_sb_update_icon(SB_NETWORK, 1); // ui_sb_update_icon(SB_NETWORK, 1);

View File

@@ -12,11 +12,11 @@
* it should be malloc'ed and then linked to the NETCARD def. * it should be malloc'ed and then linked to the NETCARD def.
* Will be done later. * Will be done later.
* *
* Version: @(#)network.c 1.0.10 2018/11/18 * Version: @(#)network.c 1.0.11 2019/11/14
* *
* Author: Fred N. van Kempen, <decwiz@yahoo.com> * Author: Fred N. van Kempen, <decwiz@yahoo.com>
* *
* Copyright 2017,2018 Fred N. van Kempen. * Copyright 2017-2019 Fred N. van Kempen.
* *
* Redistribution and use in source and binary forms, with * Redistribution and use in source and binary forms, with
* or without modification, are permitted provided that the * or without modification, are permitted provided that the
@@ -99,6 +99,7 @@ static netcard_t net_cards[] = {
int network_type; int network_type;
int network_ndev; int network_ndev;
int network_card; int network_card;
volatile int network_wait;
char network_host[522]; char network_host[522];
netdev_t network_devs[32]; netdev_t network_devs[32];
#ifdef ENABLE_NIC_LOG #ifdef ENABLE_NIC_LOG
@@ -442,3 +443,10 @@ network_card_get_from_internal_name(char *s)
return(-1); return(-1);
} }
void
network_set_wait(int wait)
{
network_wait = wait;
}

View File

@@ -8,11 +8,11 @@
* *
* Definitions for the network module. * Definitions for the network module.
* *
* Version: @(#)network.h 1.0.2 2018/03/15 * Version: @(#)network.h 1.0.3 2019/11/14
* *
* Author: Fred N. van Kempen, <decwiz@yahoo.com> * Author: Fred N. van Kempen, <decwiz@yahoo.com>
* *
* Copyright 2017,2018 Fred N. van Kempen. * Copyright 2017-2019 Fred N. van Kempen.
* *
* Redistribution and use in source and binary forms, with * Redistribution and use in source and binary forms, with
* or without modification, are permitted provided that the * or without modification, are permitted provided that the
@@ -89,6 +89,7 @@ extern "C" {
/* Global variables. */ /* Global variables. */
extern int nic_do_log; /* config */ extern int nic_do_log; /* config */
extern int network_ndev; extern int network_ndev;
extern volatile int network_wait;
extern netdev_t network_devs[32]; extern netdev_t network_devs[32];
@@ -124,6 +125,8 @@ extern char *network_card_get_internal_name(int);
extern int network_card_get_from_internal_name(char *); extern int network_card_get_from_internal_name(char *);
extern const device_t *network_card_getdevice(int); extern const device_t *network_card_getdevice(int);
extern void network_set_wait(int wait);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif