Changeset 03cd7a9e in mainline for uspace/lib/pcap/src/pcapdump_iface.c
- Timestamp:
- 2024-12-13T08:44:05Z (15 months ago)
- Children:
- f08447b
- Parents:
- 59fe16d
- git-author:
- Nataliia Korop <n.corop08@…> (2024-10-28 09:57:08)
- git-committer:
- Nataliia Korop <n.corop08@…> (2024-12-13 08:44:05)
- File:
-
- 1 edited
-
uspace/lib/pcap/src/pcapdump_iface.c (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/pcap/src/pcapdump_iface.c
r59fe16d r03cd7a9e 38 38 #include <async.h> 39 39 #include <errno.h> 40 #include <stdlib.h> 40 41 #include <fibril_synch.h> 42 #include <str.h> 41 43 42 44 #include "pcapdump_iface.h" 43 45 44 FIBRIL_MUTEX_INITIALIZE(to_dump_mutex); 45 46 static void pcapdump_start_srv(ipc_call_t *icall, pcap_iface_t *iface) 46 static void pcapdump_start_srv(ipc_call_t *icall, pcap_dumper_t *dumper) 47 47 { 48 48 char *data; 49 49 size_t size; 50 errno_t rc = async_data_write_accept((void **) &data, false, 0, 0, 0, &size);50 errno_t rc = async_data_write_accept((void **) &data, true, 0, 0, 0, &size); 51 51 if (rc != EOK) { 52 52 async_answer_0(icall, rc); … … 54 54 } 55 55 56 /** When try to start when already started, close current and starts new */ 57 if (iface->to_dump == true) { 58 iface->fini(); 56 assert(str_length(data) == size && "Data were damaged during transmission.\n"); 57 58 rc = pcap_dumper_start(dumper, (const char *)data); 59 free(data); 60 if (rc != EOK) 61 { 62 //TODO what? 59 63 } 60 iface->init((const char *)data); 61 62 fibril_mutex_lock(&to_dump_mutex); 63 iface->to_dump = true; 64 fibril_mutex_unlock(&to_dump_mutex); 65 66 async_answer_0(icall, rc); 64 async_answer_0(icall, EOK); 67 65 } 68 66 69 static void pcapdump_stop_srv(ipc_call_t *icall, pcap_ iface_t *iface)67 static void pcapdump_stop_srv(ipc_call_t *icall, pcap_dumper_t *dumper) 70 68 { 71 /** If want to stop, when already stopped, do nothing */ 72 if (iface->to_dump == false) { 73 async_answer_0(icall, EOK); 74 return; 75 } 76 77 fibril_mutex_lock(&to_dump_mutex); 78 iface->to_dump = false; 79 fibril_mutex_unlock(&to_dump_mutex); 80 81 iface->fini(); 69 pcap_dumper_stop(dumper); 82 70 async_answer_0(icall, EOK); 83 71 } … … 85 73 void pcapdump_conn(ipc_call_t *icall, void *arg) 86 74 { 87 pcap_ iface_t *iface = (pcap_iface_t *)arg;88 printf("pcapdump_conn\n"); 89 assert(( iface != NULL) && "pcapdump requires pcap interface\n");75 pcap_dumper_t *dumper = (pcap_dumper_t *)arg; 76 77 assert((dumper != NULL) && "pcapdump requires pcap dumper\n"); 90 78 91 79 /* Accept connection */ … … 103 91 switch (method) { 104 92 case PCAP_CONTROL_SET_START: 105 pcapdump_start_srv(&call, iface);93 pcapdump_start_srv(&call, dumper); 106 94 break; 107 95 case PCAP_CONTROL_SET_STOP: 108 pcapdump_stop_srv(&call, iface);96 pcapdump_stop_srv(&call, dumper); 109 97 break; 110 98 default: … … 115 103 } 116 104 117 errno_t pcapdump_init(pcap_ iface_t *iface)105 errno_t pcapdump_init(pcap_dumper_t *dumper) 118 106 { 119 107 port_id_t port; 120 108 errno_t rc; 121 109 122 rc = pcap_ iface_init(iface);110 rc = pcap_dumper_init(dumper); 123 111 124 112 if (rc != EOK) { … … 128 116 129 117 rc = async_create_port(INTERFACE_PCAP_CONTROL, 130 pcapdump_conn, iface, &port);118 pcapdump_conn, dumper, &port); 131 119 if (rc != EOK) { 132 120 return rc; … … 139 127 * Called every time, the packet is sent/recieved by the device 140 128 * 141 * @param ifaceDumping interface129 * @param dumper Dumping interface 142 130 * @param data The packet 143 131 * @param size Size of the packet 144 132 * 145 133 */ 146 void pcapdump_packet(pcap_ iface_t *iface, const void *data, size_t size)134 void pcapdump_packet(pcap_dumper_t *dumper, const void *data, size_t size) 147 135 { 148 136 149 if ( iface== NULL) {137 if (dumper == NULL) { 150 138 return; 151 139 } 152 140 153 if (!iface->to_dump) { 154 return; 155 } 156 157 iface->add_packet(data, size); 141 pcap_dumper_add_packet(dumper, data, size); 158 142 } 159 143
Note:
See TracChangeset
for help on using the changeset viewer.
