source: mainline/uspace/app/pcapctl/main.c@ 7924f82

Last change on this file since 7924f82 was 7924f82, checked in by Nataliia Korop <n.corop08@…>, 10 months ago
choose nic: without —deviced
  • Property mode set to 100644
File size: 3.6 KB
Line 
1/*
2 * Copyright (c) 2023 Nataliia Korop
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * - Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * - Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * - The name of the author may not be used to endorse or promote products
15 * derived from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29/** @addtogroup pcapctl
30 * @{
31 */
32/** @file pcapctl app
33 */
34
35#include <stdio.h>
36#include <str.h>
37#include <errno.h>
38
39#include "pcapctl_dump.h"
40
41#define NAME "pcapctl"
42
43//pcapctl_sess_t* sess = NULL;
44
45static errno_t start_dumping(const char *svc_name, const char *name)
46{
47 pcapctl_sess_t* sess = NULL;
48 errno_t rc = pcapctl_dump_open(svc_name, &sess);
49 if (rc != EOK) {
50 return 1;
51 }
52
53 pcapctl_dump_start(name, sess);
54 pcapctl_dump_close(sess);
55 return EOK;
56}
57
58/** Session might */
59static errno_t stop_dumping(const char *svc_name)
60{
61 pcapctl_sess_t* sess = NULL;
62 errno_t rc = pcapctl_dump_open(svc_name, &sess);
63 if (rc != EOK) {
64 return 1;
65 }
66 pcapctl_dump_stop(sess);
67 pcapctl_dump_close(sess);
68 return EOK;
69}
70
71static void list_devs(void) {
72 pcapctl_list();
73}
74
75static void usage(void)
76{
77 printf("Usage:\n"
78 NAME " list \n"
79 "\tList of devices\n"
80 NAME " start --device= | -d <device number from list> <outfile>\n"
81 "\tPackets dumped from device will be written to <outfile>\n"
82 NAME " stop --device= | -d <device>\n"
83 "\tDumping from <device> stops\n"
84 NAME " start <outfile>\n"
85 "\tPackets dumped from the 1st device from the list will be written to <outfile>\n"
86 NAME " --help | -h\n"
87 "\tShow this application help.\n");
88}
89
90int main(int argc, char *argv[])
91{
92 if (argc < 2) {
93 usage();
94 return 1;
95 } else {
96 /** help*/
97 if (str_cmp(argv[1], "--help") == 0 || str_cmp(argv[1], "-h") == 0) {
98 usage();
99 return 0;
100 /** list*/
101 } else if (str_cmp(argv[1], "list") == 0) {
102 list_devs();
103 return 0;
104 /** start with/out devnum */
105 } else if (str_cmp(argv[1], "start") == 0) {
106 if (argc == 3) {
107 start_dumping((char *)"0", argv[2]);
108 return 0;
109 }
110 else if (argc == 4) {
111 start_dumping(argv[2], argv[3]);
112 return 0;
113 } else {
114 usage();
115 return 1;
116 }
117 /** Stop with/out devnum */
118 } else if (str_cmp(argv[1], "stop") == 0) {
119 if (argc == 2) {
120 stop_dumping((char *)"0");
121 fprintf(stdout, "Dumping was stopped\n");
122 return 0;
123 }
124 else if (argc == 3) {
125
126 stop_dumping(argv[2]);
127 fprintf(stdout, "Dumping was stopped\n");
128 } else {
129 usage();
130 return 1;
131 }
132 } else {
133 usage();
134 return 1;
135 }
136 }
137 return 0;
138}
139
140/** @}
141 */
Note: See TracBrowser for help on using the repository browser.