Changeset e1e8f7a in mainline for uspace/lib/pcap/src/pcap_dumper.c


Ignore:
Timestamp:
2024-12-13T08:44:05Z (14 months ago)
Author:
Nataliia Korop <n.corop08@…>
Children:
e5b2777
Parents:
467d2b9
git-author:
Nataliia Korop <n.corop08@…> (2024-11-16 11:14:06)
git-committer:
Nataliia Korop <n.corop08@…> (2024-12-13 08:44:05)
Message:

set ops as number and with start req

File:
1 edited

Legend:

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

    r467d2b9 re1e8f7a  
    3939#include "pcap_dumper.h"
    4040
     41#define SHORT_OPS_BYTE_COUNT 60
     42#define NAME "pcap"
     43
    4144/** Initialize writing to .pcap file.
    4245 *
     
    4851static errno_t pcap_writer_to_file_init(pcap_writer_t *writer, const char *filename)
    4952{
    50         errno_t rc;
    5153        writer->data = fopen(filename, "a");
    5254        if (writer->data == NULL) {
    53                 rc = EINVAL;
    54                 return rc;
     55                return EINVAL;
    5556        }
    5657        pcap_writer_add_header(writer);
    5758
    58         rc = EOK;
    59         return rc;
     59        return EOK;
     60}
     61
     62static errno_t pcap_writer_to_file_init_append(pcap_writer_t *writer, const char *filename)
     63{
     64        writer->data = fopen(filename, "a");
     65        if (writer->data == NULL) {
     66                return EINVAL;
     67        }
     68
     69        return EOK;
    6070}
    6171
     
    8292}
    8393
    84 static pcap_writer_ops_t file_ops = {
     94static const pcap_writer_ops_t file_ops = {
    8595        .open = &pcap_writer_to_file_init,
    8696        .write_u32 = &pcap_file_w32,
     
    90100};
    91101
    92 static size_t pcap_short_file_w32(pcap_writer_t *writer, uint32_t data)
    93 {
    94         return fwrite(&data, 1, 4, (FILE *)writer->data);
    95 }
    96 
    97 static size_t pcap_short_file_w16(pcap_writer_t *writer, uint16_t data)
    98 {
    99         return fwrite(&data, 1, 2, (FILE *)writer->data);
    100 }
    101 
    102102static size_t pcap_short_file_wbuffer(pcap_writer_t *writer, const void *data, size_t size)
    103103{
    104         return fwrite(data, 1, size < 60 ? size : 60, (FILE *)writer->data);
    105 }
    106 
    107 static void pcap_short_file_close(pcap_writer_t *writer)
    108 {
    109         fclose((FILE *)writer->data);
    110 }
    111 
    112 static pcap_writer_ops_t short_file_ops = {
     104        return fwrite(data, 1, size < 60 ? size : 60, (FILE *)writer->data); //define
     105}
     106
     107static const pcap_writer_ops_t short_file_ops = {
    113108        .open = &pcap_writer_to_file_init,
    114         .write_u32 = &pcap_short_file_w32,
    115         .write_u16 = &pcap_short_file_w16,
     109        .write_u32 = &pcap_file_w32,
     110        .write_u16 = &pcap_file_w16,
    116111        .write_buffer = &pcap_short_file_wbuffer,
    117         .close = &pcap_short_file_close
     112        .close = &pcap_file_close
    118113
    119114};
     115
     116static const pcap_writer_ops_t append_file_ops = {
     117        .open = &pcap_writer_to_file_init_append,
     118        .write_u32 = &pcap_file_w32,
     119        .write_u16 = &pcap_file_w16,
     120        .write_buffer = &pcap_file_wbuffer,
     121        .close = &pcap_file_close
     122};
     123
     124static pcap_writer_ops_t ops[3] = {file_ops, short_file_ops, append_file_ops};
     125
     126int pcap_dumper_get_ops_number(void)
     127{
     128        return (int)(sizeof(ops) / sizeof(pcap_writer_ops_t));
     129}
    120130
    121131errno_t pcap_dumper_start(struct pcap_dumper *dumper, const char *name)
     
    137147}
    138148
    139 errno_t pcap_dumper_set_ops(struct pcap_dumper *dumper, const char *name)
     149errno_t pcap_dumper_set_ops(struct pcap_dumper *dumper, int index)
    140150{
    141151        fibril_mutex_lock(&dumper->mutex);
    142152        errno_t rc = EOK;
    143         if (!str_cmp(name, "short_file")) {
    144                 dumper->writer.ops = &short_file_ops;
    145         } else if (!str_cmp(name, "full_file")) {
    146                 dumper->writer.ops = &file_ops;
    147         } else {
    148                 rc = EINVAL;
    149         }
     153        dumper->writer.ops = &ops[index];
    150154        fibril_mutex_unlock(&dumper->mutex);
    151155        return rc;
     
    190194        dumper->writer.ops = NULL;
    191195
    192         errno_t rc = log_init("pcap");
     196        errno_t rc = log_init(NAME);
    193197        if (rc != EOK) {
    194                 printf("pcap : Failed to initialize log.\n");
     198                printf("%s : Failed to initialize log.\n", NAME);
    195199                return 1;
    196200        }
Note: See TracChangeset for help on using the changeset viewer.