Changeset 03cd7a9e in mainline for uspace/lib/pcap/src/pcap_iface.c


Ignore:
Timestamp:
2024-12-13T08:44:05Z (15 months ago)
Author:
Nataliia Korop <n.corop08@…>
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)
Message:

refactoring after 23.10

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/pcap/src/pcap_iface.c

    r59fe16d r03cd7a9e  
    6565};
    6666
    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// }
    7071
    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
     96errno_t pcap_dumper_start(struct pcap_dumper *dumper, const char *name)
    7297{
    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);
    74115        return rc;
    75116}
    76117
    77 void pcap_add_packet(const void *data, size_t size)
     118//udelat globalni
     119void pcap_dumper_add_packet(struct pcap_dumper *dumper, const void *data, size_t size)
    78120{
    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);
    80126                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);
    82130}
    83131
    84 void pcap_close_file(void)
     132//udelt globalni
     133void pcap_dumper_stop(struct pcap_dumper *dumper)
    85134{
    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);
    88146}
    89147
    90148/** Initialize interface for dumping packets
    91149 *
    92  * @param iface Device dumping interface
     150 * @param dumper Device dumping interface
    93151 *
    94152 */
    95 errno_t pcap_iface_init(pcap_iface_t *iface)
     153errno_t pcap_dumper_init(pcap_dumper_t *dumper)
    96154{
    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;
    102158        return EOK;
    103159}
Note: See TracChangeset for help on using the changeset viewer.