|
|
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.