Changeset 3a4c6d9 in mainline


Ignore:
Timestamp:
2025-11-14T16:58:23Z (15 hours ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master
Parents:
d101368
git-author:
Nataliia Korop <n.corop08@…> (2025-11-14 16:57:02)
git-committer:
Jiri Svoboda <jiri@…> (2025-11-14 16:58:23)
Message:

Packet capture (thx Nataliia Korop)

Files:
22 added
21 edited

Legend:

Unmodified
Added
Removed
  • abi/include/abi/ipc/interfaces.h

    rd101368 r3a4c6d9  
    206206            FOURCC_COMPACT('s', 's', 't', 'm') | IFACE_EXCHANGE_SERIALIZE,
    207207        INTERFACE_SYSTEM_CB =
    208             FOURCC_COMPACT('s', 's', 't', 'm') | IFACE_EXCHANGE_SERIALIZE | IFACE_MOD_CALLBACK
     208            FOURCC_COMPACT('s', 's', 't', 'm') | IFACE_EXCHANGE_SERIALIZE | IFACE_MOD_CALLBACK,
     209        INTERFACE_PCAP_CONTROL =
     210            FOURCC_COMPACT('p', 'c', 't', 'l') | IFACE_EXCHANGE_SERIALIZE,
    209211} iface_t;
    210212
  • uspace/app/meson.build

    rd101368 r3a4c6d9  
    7474        'nterm',
    7575        'ofw',
     76        'pcapcat',
     77        'pcapctl',
    7678        'pci',
    7779        'ping',
  • uspace/drv/nic/e1k/e1k.c

    rd101368 r3a4c6d9  
    175175        /** Lock for EEPROM access */
    176176        fibril_mutex_t eeprom_lock;
     177
    177178} e1000_t;
    178179
     
    11921193                if (frame != NULL) {
    11931194                        memcpy(frame->data, e1000->rx_frame_virt[next_tail], frame_size);
     1195
    11941196                        nic_received_frame(nic, frame);
    11951197                } else {
     
    22012203                goto err_fun_bind;
    22022204
    2203         rc = ddf_fun_add_to_category(fun, DEVICE_CATEGORY_NIC);
    2204         if (rc != EOK)
    2205                 goto err_add_to_cat;
    2206 
     2205        rc = nic_fun_add_to_cats(fun);
     2206        if (rc != EOK) {
     2207                ddf_msg(LVL_ERROR, "Failed adding function to categories");
     2208                ddf_fun_unbind(fun);
     2209                return rc;
     2210        }
    22072211        return EOK;
    22082212
    2209 err_add_to_cat:
    2210         ddf_fun_unbind(fun);
    22112213err_fun_bind:
    22122214err_rx_structure:
     
    23882390
    23892391        memcpy(e1000->tx_frame_virt[tdt], data, size);
    2390 
    23912392        tx_descriptor_addr->phys_addr = PTR_TO_U64(e1000->tx_frame_phys[tdt]);
    23922393        tx_descriptor_addr->length = size;
  • uspace/drv/nic/e1k/meson.build

    rd101368 r3a4c6d9  
    2727#
    2828
    29 deps = [ 'nic' ]
     29deps = [ 'nic' , 'pcap' ]
    3030src = files('e1k.c')
  • uspace/drv/nic/ne2k/ne2k.c

    rd101368 r3a4c6d9  
    4444#include <str_error.h>
    4545#include <async.h>
     46#include <ddf/log.h>
    4647#include "dp8390.h"
    4748
     
    450451        }
    451452
    452         rc = ddf_fun_add_to_category(fun, DEVICE_CATEGORY_NIC);
     453        rc = nic_fun_add_to_cats(fun);
    453454        if (rc != EOK) {
     455                ddf_msg(LVL_ERROR, "Failed adding function to categories");
    454456                ddf_fun_unbind(fun);
    455                 ddf_fun_destroy(fun);
    456457                return rc;
    457458        }
     
    497498        nic_driver_implement(&ne2k_driver_ops, &ne2k_dev_ops, &ne2k_nic_iface);
    498499
     500        ddf_log_init(NAME);
    499501        return ddf_driver_main(&ne2k_driver);
    500502}
  • uspace/drv/nic/rtl8139/driver.c

    rd101368 r3a4c6d9  
    13131313                goto err_fun_create;
    13141314        }
    1315         rc = ddf_fun_add_to_category(fun, DEVICE_CATEGORY_NIC);
     1315
     1316        rc = nic_fun_add_to_cats(fun);
    13161317        if (rc != EOK) {
    1317                 ddf_msg(LVL_ERROR, "Failed adding function to category");
    1318                 goto err_fun_bind;
     1318                ddf_msg(LVL_ERROR, "Failed adding function to categories");
     1319                ddf_fun_unbind(fun);
     1320                return rc;
    13191321        }
    13201322
     
    13241326        return EOK;
    13251327
    1326 err_fun_bind:
    1327         ddf_fun_unbind(fun);
     1328        // err_fun_bind:
     1329        // ddf_fun_unbind(fun);
    13281330err_fun_create:
    13291331        ddf_fun_destroy(fun);
  • uspace/drv/nic/rtl8169/driver.c

    rd101368 r3a4c6d9  
    461461        }
    462462
    463         rc = ddf_fun_add_to_category(fun, DEVICE_CATEGORY_NIC);
     463        rc = nic_fun_add_to_cats(fun);
    464464        if (rc != EOK) {
    465                 ddf_msg(LVL_ERROR, "Failed adding function to category");
    466                 goto err_fun_bind;
     465                ddf_msg(LVL_ERROR, "Failed adding function to categories");
     466                ddf_fun_unbind(fun);
     467                return rc;
    467468        }
    468469
     
    471472        return EOK;
    472473
    473 err_fun_bind:
    474         ddf_fun_unbind(fun);
     474        // err_fun_bind:
     475        // ddf_fun_unbind(fun);
    475476err_fun_create:
    476477        ddf_fun_destroy(fun);
  • uspace/drv/nic/virtio-net/virtio-net.c

    rd101368 r3a4c6d9  
    428428        }
    429429
    430         rc = ddf_fun_add_to_category(fun, DEVICE_CATEGORY_NIC);
     430        rc = nic_fun_add_to_cats(fun);
    431431        if (rc != EOK) {
    432                 ddf_msg(LVL_ERROR, "Failed adding function to category");
    433                 goto unbind;
     432                ddf_msg(LVL_ERROR, "Failed adding function to categories");
     433                ddf_fun_unbind(fun);
     434                return rc;
    434435        }
    435436
     
    439440        return EOK;
    440441
    441 unbind:
    442         ddf_fun_unbind(fun);
     442        // unbind:
     443        // ddf_fun_unbind(fun);
    443444destroy:
    444445        ddf_fun_destroy(fun);
  • uspace/lib/c/include/ipc/services.h

    rd101368 r3a4c6d9  
    6767#define SERVICE_NAME_VBD      "vbd"
    6868#define SERVICE_NAME_VOLSRV   "volsrv"
    69 
    7069#endif
    7170
  • uspace/lib/meson.build

    rd101368 r3a4c6d9  
    8484        'nettl',
    8585        'ofw',
     86        'pcap',
    8687        'pcm',
    8788        'pcut',
  • uspace/lib/nic/include/nic.h

    rd101368 r3a4c6d9  
    4444#include <device/hw_res_parsed.h>
    4545#include <ops/nic.h>
     46#include <pcap_dumper.h>
    4647
    4748#define DEVICE_CATEGORY_NIC "nic"
     
    278279extern void nic_sw_period_stop(nic_t *);
    279280
     281/* pcapdump interface */
     282extern pcap_dumper_t *nic_get_pcap_dumper(nic_t *);
     283
     284extern errno_t nic_fun_add_to_cats(ddf_fun_t *fun);
     285
    280286#endif // __NIC_H__
    281287
  • uspace/lib/nic/include/nic_driver.h

    rd101368 r3a4c6d9  
    4646#include <nic/nic.h>
    4747#include <async.h>
     48#include <pcapdump_srv.h>
    4849
    4950#include "nic.h"
     
    195196         */
    196197        poll_request_handler on_poll_request;
     198
     199        /** Packets dumper. */
     200        pcap_dumper_t dumper;
     201
    197202        /** Data specific for particular driver */
    198203        void *specific;
  • uspace/lib/nic/include/nic_impl.h

    rd101368 r3a4c6d9  
    8787extern void nic_close_impl(ddf_fun_t *fun);
    8888
    89 extern void nic_device_added_impl(ddf_dev_t *dev);
    90 
    9189#endif
    9290
  • uspace/lib/nic/meson.build

    rd101368 r3a4c6d9  
    2727#
    2828
    29 deps = [ 'drv' ]
     29deps = [ 'drv' , 'pcap' ]
    3030c_args = [ '-DLIBNIC_INTERNAL', ]
    3131src = files(
  • uspace/lib/nic/src/nic_driver.c

    rd101368 r3a4c6d9  
    4747#include <ops/nic.h>
    4848#include <errno.h>
     49#include <pcapdump_drv_iface.h>
    4950
    5051#include "nic_driver.h"
     
    522523         *               calls it inside send_frame handler (with locked main lock)
    523524         */
     525        pcapdump_packet(nic_get_pcap_dumper(nic_data), frame->data, frame->size);
    524526        fibril_rwlock_read_lock(&nic_data->rxc_lock);
    525527        nic_frame_type_t frame_type;
     
    560562                fibril_rwlock_write_unlock(&nic_data->stats_lock);
    561563        }
     564        //pcapdump_packet(nic_get_pcap_dumper(nic_data), frame->data, frame->size);
    562565        nic_release_frame(nic_data, frame);
    563566}
     
    648651        nic_data->dev = device;
    649652
     653        errno_t pcap_rc  = pcapdump_init(nic_get_pcap_dumper(nic_data));
     654        if (pcap_rc != EOK) {
     655                printf("Failed creating pcapdump port\n");
     656        }
     657
    650658        return nic_data;
    651659}
     
    11331141}
    11341142
     1143pcap_dumper_t *nic_get_pcap_dumper(nic_t *nic_data)
     1144{
     1145        return &nic_data->dumper;
     1146}
     1147
    11351148/** @}
    11361149 */
  • uspace/lib/nic/src/nic_impl.c

    rd101368 r3a4c6d9  
    4040#include <ipc/services.h>
    4141#include <ns.h>
     42#include <pcapdump_drv_iface.h>
    4243#include "nic_driver.h"
    4344#include "nic_ev.h"
     
    179180                return EBUSY;
    180181        }
    181 
     182        pcapdump_packet(nic_get_pcap_dumper(nic_data), data, size);
    182183        nic_data->send_frame(nic_data, data, size);
    183184        fibril_rwlock_read_unlock(&nic_data->main_lock);
     
    843844}
    844845
     846errno_t nic_fun_add_to_cats(ddf_fun_t *fun)
     847{
     848        errno_t rc;
     849        rc = ddf_fun_add_to_category(fun, DEVICE_CATEGORY_NIC);
     850        if (rc != EOK)
     851                return rc;
     852
     853        rc = ddf_fun_add_to_category(fun, "pcap");
     854        if (rc != EOK) {
     855                return rc;
     856        }
     857        return EOK;
     858}
     859
    845860/** @}
    846861 */
  • uspace/srv/locsrv/locsrv.c

    rd101368 r3a4c6d9  
    13931393        categ_dir_add_cat(&cdir, cat);
    13941394
     1395        cat = category_new("pcap");
     1396        categ_dir_add_cat(&cdir, cat);
    13951397        return true;
    13961398}
  • uspace/srv/net/ethip/ethip.c

    rd101368 r3a4c6d9  
    5353
    5454#define NAME "ethip"
     55/** Interface for dumping packets */
    5556
    5657static errno_t ethip_open(iplink_srv_t *srv);
     
    197198        if (rc != EOK)
    198199                return rc;
    199 
    200200        rc = ethip_nic_send(nic, data, size);
    201201        free(data);
  • uspace/srv/net/ethip/meson.build

    rd101368 r3a4c6d9  
    2727#
    2828
    29 deps = [ 'drv' ]
     29deps = [ 'drv' , 'pcap' ]
    3030src = files(
    3131        'arp.c',
  • uspace/srv/net/inetsrv/inetsrv.c

    rd101368 r3a4c6d9  
    212212
    213213        /* Route packet using source/destination addresses */
    214 
    215214        rc = inet_find_dir(&dgram->src, &dgram->dest, dgram->tos, &dir);
    216215        if (rc != EOK)
     
    547546                        dgram.data = packet->data;
    548547                        dgram.size = packet->size;
    549 
    550548                        return inet_recv_dgram_local(&dgram, packet->proto);
    551549                } else {
  • uspace/srv/net/inetsrv/meson.build

    rd101368 r3a4c6d9  
    2727#
    2828
    29 deps = [ 'inet', 'sif' ]
     29deps = [ 'inet', 'sif', 'pcap' ]
     30
    3031src = files(
    3132        'addrobj.c',
Note: See TracChangeset for help on using the changeset viewer.