|
|
1.1 root 1: /*
2: Previous - dlgEthernet.c
3:
4: This file is distributed under the GNU Public License, version 2 or at
5: your option any later version. Read the file gpl.txt for details.
6: */
7: const char DlgEthernetAdvanced_fileid[] = "Previous dlgEthernetAdvanced.c : " __DATE__ " " __TIME__;
8:
9: #include "main.h"
10: #include "configuration.h"
11: #include "dialog.h"
12: #include "sdlgui.h"
13: #include "file.h"
14: #include "paths.h"
15:
16: #if HAVE_PCAP
17: #include <pcap.h>
18:
19: #define DLGENETPCAP_CANCEL 3
20: #define DLGENETPCAP_SELECT 4
21: #define DLGENETPCAP_NEXT 5
22:
23: #define PCAP_LIST_LEN 29
24:
25: char pcap_list[PCAP_LIST_LEN] = "";
26:
27: /* The Boot options dialog: */
28: static SGOBJ enetpcapdlg[] =
29: {
30: { SGBOX, 0, 0, 0,0, 36,8, NULL },
31: { SGTEXT, 0, 0, 2,1, 31,1, "Select Host Ethernet Interface:" },
32: { SGTEXT, 0, 0, 3,3, PCAP_LIST_LEN,1, pcap_list },
33:
34: { SGBUTTON, 0, 0, 4,6, 8,1, "Cancel" },
35: { SGBUTTON, SG_DEFAULT, 0, 14,6, 8,1, "Select" },
36: { SGBUTTON, 0, 0, 24,6, 8,1, "Next" },
37:
38: { -1, 0, 0, 0,0, 0,0, NULL }
39: };
40:
41:
42:
43: /*-----------------------------------------------------------------------*/
44: /**
45: * Show and process the PCAP Ethernet options dialog.
46: */
47: bool DlgEthernetAdvanced(void)
48: {
49: int but;
50: pcap_if_t *alldevs;
51: pcap_if_t *dev;
52: char name[FILENAME_MAX];
53: char errbuf[PCAP_ERRBUF_SIZE];
54: bool bNone;
55:
56: SDLGui_CenterDlg(enetpcapdlg);
57:
58: /* Set up the variables */
59: if (pcap_findalldevs(&alldevs, errbuf) == -1)
60: {
61: printf("Error in pcap_findalldevs: %s\n", errbuf);
62: }
63: dev = alldevs;
64:
65: /* Draw and process the dialog */
66:
67: do
68: {
69: if (dev && dev->name) {
70: #ifdef _WIN32
71: /* on windows use dev->description instead of dev->name */
72: if (dev->description) {
73: strcpy(name, dev->description);
74: } else {
75: strcpy(name, dev->name);
76: }
77: #else
78: strcpy(name, dev->name);
79: #endif
80: File_ShrinkName(pcap_list, name, PCAP_LIST_LEN);
81: bNone = false;
82: } else {
83: sprintf(pcap_list, "no interface found");
84: bNone = true;
85: }
86:
87: but = SDLGui_DoDialog(enetpcapdlg, NULL);
88:
89: switch (but) {
90: case DLGENETPCAP_SELECT:
91: if (!bNone) {
92: snprintf(ConfigureParams.Ethernet.szInterfaceName, FILENAME_MAX, "%s", dev->name);
93: }
94: break;
95: case DLGENETPCAP_NEXT:
96: if (!bNone) {
97: dev = dev->next;
98: }
99: break;
100: case DLGENETPCAP_CANCEL:
101: bNone = true;
102: break;
103:
104: default:
105: break;
106: }
107: }
108: while (but != DLGENETPCAP_SELECT && but != SDLGUI_QUIT
109: && but != SDLGUI_ERROR && !bQuitProgram && !bNone);
110:
111: pcap_freealldevs(alldevs);
112:
113: return !bNone;
114: }
115: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.