Changeset fc2d593 in mainline


Ignore:
Timestamp:
2024-12-13T08:33:36Z (10 months ago)
Author:
Nataliia Korop <n.corop08@…>
Children:
1333dfc
Parents:
c7bd3f9e
git-author:
Nataliia Korop <n.corop08@…> (2024-05-08 13:47:52)
git-committer:
Nataliia Korop <n.corop08@…> (2024-12-13 08:33:36)
Message:

ethip/drvs can dump, default ethip

Location:
uspace
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/pcapctl/main.c

    rc7bd3f9e rfc2d593  
    106106        bool start = false;
    107107        bool stop = false;
    108         int dev_number = DEFAULT_DEV_NUM;
     108        int dev_number = -1;
    109109        const char *output_file_name;
    110110        int idx = 0;
  • uspace/lib/c/include/ipc/services.h

    rc7bd3f9e rfc2d593  
    6767#define SERVICE_NAME_VBD      "vbd"
    6868#define SERVICE_NAME_VOLSRV   "volsrv"
    69 #define SERVICE_NAME_DUMPPCAP "dumppcap"
    7069#endif
    7170
  • uspace/lib/nic/src/nic_driver.c

    rc7bd3f9e rfc2d593  
    523523         *               calls it inside send_frame handler (with locked main lock)
    524524         */
    525         //pcapdump_packet(nic_get_pcap_iface(nic_data), frame->data, frame->size);
     525        pcapdump_packet(nic_get_pcap_iface(nic_data), frame->data, frame->size);
    526526        fibril_rwlock_read_lock(&nic_data->rxc_lock);
    527527        nic_frame_type_t frame_type;
     
    562562                fibril_rwlock_write_unlock(&nic_data->stats_lock);
    563563        }
    564         //pcapdump_packet(nic_get_pcap_iface(nic_data), frame->data, frame->size);
     564        pcapdump_packet(nic_get_pcap_iface(nic_data), frame->data, frame->size);
    565565        nic_release_frame(nic_data, frame);
    566566}
     
    651651        nic_data->dev = device;
    652652
    653         // errno_t pcap_rc  = pcapdump_init(nic_get_pcap_iface(nic_data));
    654         // if (pcap_rc != EOK) {
    655         //      printf("Failed creating pcapdump port\n");
    656         // }
     653        errno_t pcap_rc  = pcapdump_init(nic_get_pcap_iface(nic_data));
     654        if (pcap_rc != EOK) {
     655                printf("Failed creating pcapdump port\n");
     656        }
    657657
    658658        return nic_data;
  • uspace/lib/nic/src/nic_impl.c

    rc7bd3f9e rfc2d593  
    851851                return rc;
    852852
    853         // rc = ddf_fun_add_to_category(fun, "pcap");
    854         // if (rc != EOK) {
    855         //      return rc;
    856         // }
     853        rc = ddf_fun_add_to_category(fun, "pcap");
     854        if (rc != EOK) {
     855                return rc;
     856        }
    857857        return EOK;
    858858}
  • uspace/lib/pcap/include/pcap.h

    rc7bd3f9e rfc2d593  
    5252#define PCAP_SNAP_LEN 0x00040000
    5353
    54 #define PCAP_LINKTYPE_ETHERNET 1    /* IEEE 802.3 Ethernet*/
    55 #define PCAP_LINKTYPE_IP_RAW 101
     54#define PCAP_LINKTYPE_ETHERNET 1    /* IEEE 802.3 Ethernet */
     55#define PCAP_LINKTYPE_IP_RAW 101        /* Raw IP packet */
     56#define WIRESHARK_EX 0xc
     57#define WIRESHARK_SNAPLEN 0xffff
    5658
    5759/** Header of the .pcap file
  • uspace/lib/pcap/src/pcap.c

    rc7bd3f9e rfc2d593  
    5959{
    6060        pcap_file_header_t file_header = { PCAP_MAGIC_MICRO, PCAP_MAJOR_VERSION, PCAP_MINOR_VERSION,
    61                 0x00000000, 0x00000000, (uint32_t)PCAP_SNAP_LEN, (uint32_t)PCAP_LINKTYPE_IP_RAW };
     61                0x00000000, 0x00000000, (uint32_t)PCAP_SNAP_LEN, (uint32_t)PCAP_LINKTYPE_ETHERNET };
    6262        writer->ops->write_buffer(writer, &file_header, sizeof(file_header));
    6363}
  • uspace/lib/pcap/src/pcap_iface.c

    rc7bd3f9e rfc2d593  
    9595errno_t pcap_iface_init(pcap_iface_t *iface)
    9696{
    97 
    9897        iface->to_dump = false;
    9998        iface->add_packet = pcap_add_packet;
  • uspace/lib/pcap/src/pcapctl_dump.c

    rc7bd3f9e rfc2d593  
    5252}
    5353
    54 // static errno_t pcapctl_cat_get_svc(int *index, service_id_t *svc)
    55 // {
    56 //      errno_t rc;
    57 //      category_id_t pcap_cat;
    58 //      size_t count;
    59 //      service_id_t *pcap_svcs = NULL;
    60 
    61 //      rc = loc_category_get_id("pcap", &pcap_cat, 0);
    62 //      if (rc != EOK) {
    63 //              printf("Error resolving category 'pcap'.\n");
    64 //              return rc;
    65 //      }
    66 
    67 //      rc = loc_category_get_svcs(pcap_cat, &pcap_svcs, &count);
    68 //      if (rc != EOK) {
    69 //              printf("Error resolving list of pcap services.\n");
    70 //              free(pcap_svcs);
    71 //              return rc;
    72 //      }
    73 //      if (*index < (int)count) {
    74 //              *svc =  pcap_svcs[*index];
    75 //              free(pcap_svcs);
    76 //              return EOK;
    77 //      }
    78 
    79 //      return ENOENT;
    80 // }
     54static errno_t pcapctl_cat_get_svc(int *index, service_id_t *svc)
     55{
     56        errno_t rc;
     57        category_id_t pcap_cat;
     58        size_t count;
     59        service_id_t *pcap_svcs = NULL;
     60
     61        rc = loc_category_get_id("pcap", &pcap_cat, 0);
     62        if (rc != EOK) {
     63                printf("Error resolving category 'pcap'.\n");
     64                return rc;
     65        }
     66
     67        rc = loc_category_get_svcs(pcap_cat, &pcap_svcs, &count);
     68        if (rc != EOK) {
     69                printf("Error resolving list of pcap services.\n");
     70                free(pcap_svcs);
     71                return rc;
     72        }
     73        if (*index < (int)count) {
     74                *svc =  pcap_svcs[*index];
     75                free(pcap_svcs);
     76                return EOK;
     77        }
     78
     79        return ENOENT;
     80}
    8181
    8282errno_t pcapctl_is_valid_device(int *index)
     
    149149                return ENOMEM;
    150150
    151         // rc  = pcapctl_cat_get_svc(index, &svc);
    152         // if (rc != EOK) {
    153         //      printf("Error finding the device with index: %d\n", *index);
    154         //      goto error;
    155         // }
    156 
    157         rc = loc_service_get_id("net/inet", &svc, 0);
    158         if (rc != EOK)
    159                 return ENOENT;
     151        printf("number: %d\n", *index);
     152        if (*index == -1) {
     153
     154                rc = loc_service_get_id("net/eth1", &svc, 0);
     155                if (rc != EOK)
     156                {
     157                        fprintf(stderr, "Error getting service id.\n");
     158                        return ENOENT;
     159                }
     160        }
     161        else {
     162                rc  = pcapctl_cat_get_svc(index, &svc);
     163                if (rc != EOK) {
     164                        printf("Error finding the device with index: %d\n", *index);
     165                        goto error;
     166                }
     167        }
     168
    160169
    161170        async_sess_t *new_session = loc_service_connect(svc, INTERFACE_PCAP_CONTROL, 0);
     
    165174                goto error;
    166175        }
    167         printf("got new session\n");
     176
    168177        sess->sess = new_session;
    169178        *rsess = sess;
     
    191200errno_t pcapctl_dump_start(const char *name, pcapctl_sess_t *sess)
    192201{
    193         printf("pcapctl_dump_start\n");
    194202        errno_t rc;
    195203        async_exch_t *exch = async_exchange_begin(sess->sess);
  • uspace/srv/net/ethip/ethip.c

    rc7bd3f9e rfc2d593  
    4646#include <stdlib.h>
    4747#include <task.h>
     48#include <pcapdump_iface.h>
    4849#include "arp.h"
    4950#include "ethip.h"
     
    5354
    5455#define NAME "ethip"
     56/** Interface for dumping packets */
     57pcap_iface_t pcapdump;
    5558
    5659static errno_t ethip_open(iplink_srv_t *srv);
     
    9093        }
    9194
     95        rc = pcapdump_init(&pcapdump);
     96        if (rc != EOK) {
     97                log_msg(LOG_DEFAULT, LVL_ERROR, "Failed initializing dumping interface.");
     98                return rc;
     99        }
     100
    92101        rc = ethip_nic_discovery_start();
    93102        if (rc != EOK)
     
    197206        if (rc != EOK)
    198207                return rc;
    199 
     208        pcapdump_packet(&pcapdump, data, size);
    200209        rc = ethip_nic_send(nic, data, size);
    201210        free(data);
     
    242251                return rc;
    243252        }
     253        pcapdump_packet(&pcapdump, data, size);
    244254
    245255        iplink_recv_sdu_t sdu;
  • uspace/srv/net/ethip/meson.build

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

    rc7bd3f9e rfc2d593  
    4949#include <stdint.h>
    5050#include <task.h>
    51 #include <pcapdump_iface.h>
    5251#include "addrobj.h"
    5352#include "icmp.h"
     
    6463#define NAME "inetsrv"
    6564
    66 /** Interface for dumping packets */
    67 pcap_iface_t pcapdump;
    6865
    6966static inet_naddr_t solicited_node_mask = {
     
    121118        if (rc != EOK)
    122119                return rc;
    123         rc = async_create_port(INTERFACE_PCAP_CONTROL,
    124             pcapdump_conn, &pcapdump, &port);
    125         if (rc != EOK) {
    126                 return rc;
    127         }
     120
    128121        rc = loc_server_register(NAME, &srv);
    129122        if (rc != EOK) {
     
    210203                    dgram->dest.addr, dgram, proto, ttl, df);
    211204        }
    212         printf("SENDING: packet size is - %d\n", dgram->size);
    213         pcapdump_packet(&pcapdump, dgram->data, dgram->size);
     205
    214206        log_msg(LOG_DEFAULT, LVL_DEBUG, "dgram to be routed");
    215207
    216208        /* Route packet using source/destination addresses */
    217 
    218209        rc = inet_find_dir(&dgram->src, &dgram->dest, dgram->tos, &dir);
    219210        if (rc != EOK)
     
    550541                        dgram.data = packet->data;
    551542                        dgram.size = packet->size;
    552                         printf("RECEIVING: packet size is - %d\n", packet->size);
    553                         pcapdump_packet(&pcapdump, packet->data, packet->size);
    554543                        return inet_recv_dgram_local(&dgram, packet->proto);
    555544                } else {
     
    572561                return 1;
    573562        }
    574         rc = pcap_iface_init(&pcapdump);
    575 
    576         if (rc != EOK) {
    577                 printf("Failed creating pcap interface: %s", str_error(rc));
    578                 return rc;
    579         }
     563
    580564        rc = inet_init();
    581565        if (rc != EOK)
    582566                return 1;
    583567
    584         printf(NAME ": Initialized dump iface from inetsrv.\n");
    585568        printf(NAME ": Accepting connections.\n");
    586569
Note: See TracChangeset for help on using the changeset viewer.