Changeset 03cd7a9e in mainline for uspace/lib/pcap/src/pcap_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/pcap_iface.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/pcap/src/pcap_iface.c
r59fe16d r03cd7a9e 65 65 }; 66 66 67 static pcap_writer_t pcap_writer = { 68 .ops = &file_ops, 69 }; 67 // static size_t pcap_short_file_w32(pcap_writer_t *writer, uint32_t data) 68 // { 69 // return fwrite(&data, 1, 4, (FILE *)writer->data); 70 // } 70 71 71 errno_t pcap_init(const char *name) 72 // static size_t pcap_short_file_w16(pcap_writer_t *writer, uint16_t data) 73 // { 74 // return fwrite(&data, 1, 2, (FILE *)writer->data); 75 // } 76 77 // static size_t pcap_short_file_wbuffer(pcap_writer_t *writer, const void *data, size_t size) 78 // { 79 // return fwrite(data, 1, size<60?size:60, (FILE *)writer->data); 80 // } 81 82 // static void pcap_short_file_close(pcap_writer_t *writer) 83 // { 84 // fclose((FILE *)writer->data); 85 // } 86 87 88 // static pcap_writer_ops_t short_file_ops = { 89 // .write_u32 = &pcap_short_file_w32, 90 // .write_u16 = &pcap_short_file_w16, 91 // .write_buffer = &pcap_short_file_wbuffer, 92 // .close = &pcap_short_file_close 93 94 // }; 95 96 errno_t pcap_dumper_start(struct pcap_dumper *dumper, const char *name) 72 97 { 73 errno_t rc = pcap_writer_to_file_init(&pcap_writer, name); 98 fibril_mutex_lock(&dumper->mutex); 99 100 /** When try to start when already started, close current and starts new */ 101 if (dumper->to_dump == true) 102 { 103 pcap_dumper_stop(dumper); 104 } 105 errno_t rc = pcap_writer_to_file_init(&dumper->writer, name); 106 if (rc == EOK) 107 { 108 dumper->to_dump = true; 109 } 110 else 111 { 112 printf("Failed creating pcap dumper: %s", str_error(rc)); 113 } 114 fibril_mutex_unlock(&dumper->mutex); 74 115 return rc; 75 116 } 76 117 77 void pcap_add_packet(const void *data, size_t size) 118 //udelat globalni 119 void pcap_dumper_add_packet(struct pcap_dumper *dumper, const void *data, size_t size) 78 120 { 79 if (pcap_writer.data == NULL) 121 fibril_mutex_lock(&dumper->mutex); 122 123 if (dumper->writer.data == NULL || !dumper->to_dump) 124 { 125 fibril_mutex_unlock(&dumper->mutex); 80 126 return; 81 pcap_writer_add_packet(&pcap_writer, data, size); 127 } 128 pcap_writer_add_packet(&dumper->writer, data, size); 129 fibril_mutex_unlock(&dumper->mutex); 82 130 } 83 131 84 void pcap_close_file(void) 132 //udelt globalni 133 void pcap_dumper_stop(struct pcap_dumper *dumper) 85 134 { 86 pcap_writer.ops->close(&pcap_writer); 87 pcap_writer.data = NULL; 135 fibril_mutex_lock(&dumper->mutex); 136 137 /** If want to stop, when already stopped, do nothing */ 138 if (dumper->to_dump == false) { 139 fibril_mutex_unlock(&dumper->mutex); 140 return; 141 } 142 dumper->to_dump = false; 143 dumper->writer.ops->close(&dumper->writer); 144 dumper->writer.data = NULL; 145 fibril_mutex_unlock(&dumper->mutex); 88 146 } 89 147 90 148 /** Initialize interface for dumping packets 91 149 * 92 * @param ifaceDevice dumping interface150 * @param dumper Device dumping interface 93 151 * 94 152 */ 95 errno_t pcap_ iface_init(pcap_iface_t *iface)153 errno_t pcap_dumper_init(pcap_dumper_t *dumper) 96 154 { 97 iface->to_dump = false; 98 iface->add_packet = pcap_add_packet; 99 iface->init = pcap_init; 100 iface->fini = pcap_close_file; 101 155 fibril_mutex_initialize(&dumper->mutex); 156 dumper->to_dump = false; 157 dumper->writer.ops = &file_ops; 102 158 return EOK; 103 159 }
Note:
See TracChangeset
for help on using the changeset viewer.
