-
-
Notifications
You must be signed in to change notification settings - Fork 43
/
Copy pathNwCliParms.cpp
131 lines (96 loc) · 4.1 KB
/
NwCliParms.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
//==============================================================================
//
// NwCliParms.cpp
//
// Copyright (C) 2013-2025 Greg Utas
//
// This file is part of the Robust Services Core (RSC).
//
// RSC is free software: you can redistribute it and/or modify it under the
// terms of the Lesser GNU General Public License as published by the Free
// Software Foundation, either version 3 of the License, or (at your option)
// any later version.
//
// RSC is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
// details.
//
// You should have received a copy of the Lesser GNU General Public License
// along with RSC. If not, see <http://www.gnu.org/licenses/>.
//
#include "NwCliParms.h"
#include <string>
#include "CliCommand.h"
#include "CliThread.h"
#include "Debug.h"
#include "NwTypes.h"
#include "SysIpL3Addr.h"
using namespace NodeBase;
using std::string;
//------------------------------------------------------------------------------
namespace NetworkBase
{
fixed_string NoHostAddrExpl = "Host address not found.";
fixed_string NoHostInfoExpl = "Host information not found.";
fixed_string NoHostNameExpl = "Host name not found.";
fixed_string NoIpPortExpl = "Nothing is registered against that IP port.";
fixed_string NoIpServiceExpl = "There is no IP service at that index.";
//------------------------------------------------------------------------------
fixed_string HostNameMandExpl = "name of host";
HostNameMandParm::HostNameMandParm() :
CliTextParm(HostNameMandExpl, false, 0) { }
//------------------------------------------------------------------------------
class IpAddrTextParm : public CliTextParm
{
public: IpAddrTextParm();
};
fixed_string IpAddrTextParmExpl = "IP address and optional port: n.n.n.n[:p]";
IpAddrTextParm::IpAddrTextParm() : CliTextParm(IpAddrTextParmExpl, false, 0) { }
IpAddrParm::IpAddrParm(c_string help, c_string text) :
CliText(help, text)
{
BindParm(*new IpAddrTextParm);
}
//------------------------------------------------------------------------------
fixed_string PeersTextStr = "peers";
fixed_string PeersTextExpl = "all included/excluded peers";
PeersText::PeersText() : CliText(PeersTextExpl, PeersTextStr) { }
//------------------------------------------------------------------------------
fixed_string PeerTextStr = "peer";
fixed_string PeerTextExpl = "messages to/from from a specific peer address/port";
PeerText::PeerText() : IpAddrParm(PeerTextExpl, PeerTextStr) { }
//------------------------------------------------------------------------------
fixed_string PortTextStr = "port";
fixed_string PortTextExpl = "messages received by a specific IP port";
PortText::PortText() : CliText(PortTextExpl, PortTextStr)
{
BindParm(*new IpPortMandParm);
}
//------------------------------------------------------------------------------
fixed_string PortsTextStr = "ports";
fixed_string PortsTextExpl = "all included/excluded IP ports";
PortsText::PortsText() : CliText(PortsTextExpl, PortsTextStr) { }
//------------------------------------------------------------------------------
bool GetIpL3Addr(SysIpL3Addr& input, const CliCommand& comm, CliThread& cli)
{
Debug::ft("NetworkBase.GetIpL3Addr");
string s;
// Set INPUT from the string for a layer 3 or layer 2 address.
//
if(!comm.GetString(s, cli)) return false;
if(!cli.EndOfInput()) return false;
input = SysIpL3Addr(s);
return input.IsValid();
}
//------------------------------------------------------------------------------
fixed_string IpPortMandExpl = "ipport_t";
IpPortMandParm::IpPortMandParm() : CliIntParm(IpPortMandExpl, 0, MaxIpPort) { }
fixed_string IpPortOptExpl = "ipport_t";
IpPortOptParm::IpPortOptParm() :
CliIntParm(IpPortOptExpl, 0, MaxIpPort, true) { }
//------------------------------------------------------------------------------
fixed_string ServiceNameOptExpl = "name of IP service (or port number)";
ServiceNameOptParm::ServiceNameOptParm() :
CliTextParm(ServiceNameOptExpl, true, 0) { }
}