|
INET Framework for OMNeT++/OMNEST
|
Implements the SctpPeer simple module.
More...
#include <SctpPeer.h>
Implements the SctpPeer simple module.
See the NED file for more info.
◆ BytesPerAssoc
◆ EndToEndDelay
◆ HistEndToEndDelay
◆ RcvdBytesPerAssoc
◆ RcvdPacketsPerAssoc
◆ SctpPathStatus
◆ SentPacketsPerAssoc
◆ SctpPeer()
| inet::SctpPeer::SctpPeer |
( |
| ) |
|
◆ ~SctpPeer()
| inet::SctpPeer::~SctpPeer |
( |
| ) |
|
◆ connect()
| void inet::SctpPeer::connect |
( |
| ) |
|
|
protected |
175 const char *connectAddress = par(
"connectAddress");
176 int connectPort = par(
"connectPort");
177 int outStreams = par(
"outboundStreams");
180 EV_INFO <<
"issuing OPEN command\n";
181 EV_INFO <<
"Assoc " <<
clientSocket.
getSocketId() <<
"::connect to address " << connectAddress <<
", port " << connectPort <<
"\n";
183 bool streamReset = par(
"streamReset");
184 L3Address destination;
185 L3AddressResolver().tryResolve(connectAddress, destination);
186 if (destination.isUnspecified())
187 EV <<
"cannot resolve destination address: " << connectAddress << endl;
189 clientSocket.
connect(destination, connectPort, streamReset, par(
"prMethod"), par(
"numRequestsPerSession"));
194 EV_INFO <<
"StreamReset Timer scheduled at " << simTime() <<
"\n";
195 scheduleAfter(par(
"streamRequestTime"), cmsg);
198 unsigned int streamNum = 0;
199 cStringTokenizer tokenizer(par(
"streamPriorities"));
200 while (tokenizer.hasMoreTokens()) {
201 const char *token = tokenizer.nextToken();
Referenced by handleTimer().
◆ finish()
| void inet::SctpPeer::finish |
( |
| ) |
|
|
overrideprotectedvirtual |
704 EV_INFO << getFullPath() <<
": opened " <<
numSessions <<
" sessions\n";
705 EV_INFO << getFullPath() <<
": sent " <<
bytesSent <<
" bytes in " <<
packetsSent <<
" packets\n";
708 EV_DETAIL << getFullPath() <<
": received " << elem.second <<
" bytes in assoc " << elem.first <<
"\n";
710 EV_INFO << getFullPath() <<
"Over all " <<
packetsRcvd <<
" packets received\n ";
◆ generateAndSend()
| void inet::SctpPeer::generateAndSend |
( |
| ) |
|
|
protected |
148 auto applicationPacket =
new Packet(
"ApplicationPacket");
149 auto applicationData = makeShared<BytesChunk>();
150 int numBytes = par(
"requestLength");
151 std::vector<uint8_t> vec;
152 vec.resize(numBytes);
153 for (
int i = 0; i < numBytes; i++)
155 applicationData->setBytes(vec);
156 applicationData->addTag<CreationTimeTag>()->setCreationTime(simTime());
157 applicationPacket->insertAtBack(applicationData);
158 auto sctpSendReq = applicationPacket->addTag<SctpSendReq>();
159 sctpSendReq->setLast(
true);
160 sctpSendReq->setPrMethod(par(
"prMethod"));
161 sctpSendReq->setPrValue(par(
"prValue"));
166 applicationPacket->addTag<SocketReq>()->setSocketId(
serverAssocId);
Referenced by handleMessage(), and handleTimer().
◆ handleMessage()
| void inet::SctpPeer::handleMessage |
( |
cMessage * |
msg | ) |
|
|
overrideprotectedvirtual |
212 if (msg->isSelfMessage())
215 switch (msg->getKind()) {
218 Message *message = check_and_cast<Message *>(msg);
219 auto& intags = message->getTags();
220 const auto& ind = intags.findTag<SctpCommandReq>();
221 Request *cmsg =
new Request(
"SCTP_C_ABORT",
SCTP_C_ABORT);
222 auto& cmd = cmsg->addTag<SctpSendReq>();
223 id = ind->getSocketId();
224 cmd->setSocketId(
id);
225 cmd->setSid(ind->getSid());
226 cmd->setNumMsgs(ind->getNumMsgs());
236 Message *message = check_and_cast<Message *>(msg);
237 auto&
tags = message->getTags();
238 const auto& connectInfo =
tags.findTag<SctpConnectReq>();
246 sprintf(text,
"App: Received Bytes of assoc %d",
serverAssocId);
249 sprintf(text,
"App: EndToEndDelay of assoc %d",
serverAssocId);
251 sprintf(text,
"Hist: EndToEndDelay of assoc %d",
serverAssocId);
257 if (par(
"numPacketsToSendPerClient").intValue() > 0) {
260 if (par(
"thinkTime").doubleValue() > 0) {
284 auto& qinfo = cmsg->addTag<SctpInfoReq>();
286 qinfo->setSocketId(
id);
290 EV_INFO <<
"!!!!!!!!!!!!!!!All data sent from Server !!!!!!!!!!\n";
293 if (j->second == 0 && par(
"waitToClose").doubleValue() > 0) {
297 scheduleAfter(par(
"waitToClose"), abortMsg);
300 EV_INFO <<
"no more packets to send, call shutdown for assoc " <<
serverAssocId <<
"\n";
302 auto& cmd = cmsg->addTag<SctpCommandReq>();
314 Message *message = check_and_cast<Message *>(msg);
315 auto& intags = message->getTags();
316 const auto& ind = intags.findTag<SctpCommandReq>();
317 id = ind->getSocketId();
319 auto cmd = cmsg->addTag<SctpSendReq>();
320 cmsg->addTag<SocketReq>()->setSocketId(
id);
322 cmd->setSocketId(
id);
323 cmd->setSid(ind->getSid());
324 cmd->setNumMsgs(ind->getNumMsgs());
326 if (!cmsg->isScheduled() &&
schedule ==
false) {
327 scheduleAfter(par(
"delayFirstRead"), cmsg);
335 Packet *message = check_and_cast<Packet *>(msg);
336 auto&
tags = message->getTags();
337 const auto& ind =
tags.findTag<SctpRcvReq>();
338 id = ind->getSocketId();
343 j->second +=
PK(msg)->getByteLength();
345 k->second->record(j->second);
349 if (par(
"numPacketsToReceivePerClient").intValue() > 0) {
352 SctpSimpleMessage *smsg = check_and_cast<SctpSimpleMessage *>(msg);
354 j->second->record(simTime() - smsg->getCreationTime());
356 k->second->collect(simTime() - smsg->getCreationTime());
358 if (i->second == 0) {
360 auto& qinfo = cmsg->addTag<SctpCommandReq>();
361 qinfo->setSocketId(
id);
370 const auto& smsg = message->peekData();
372 for (
auto& region : smsg->getAllTags<CreationTimeTag>()) {
373 m->second->record(simTime() - region.getTag()->getCreationTime());
374 k->second->collect(simTime() - region.getTag()->getCreationTime());
377 auto cmsg =
new Packet(
"ApplicationPacket");
378 cmsg->insertAtBack(smsg);
379 auto cmd = cmsg->addTag<SctpSendReq>();
382 cmd->setSocketId(
id);
398 Message *message = check_and_cast<Message *>(msg);
399 id = message->getTag<SocketInd>()->getSocketId();
400 EV_INFO <<
"server: SCTP_I_SHUTDOWN_RECEIVED for assoc " <<
id <<
"\n";
406 if (i->second == 0) {
408 auto& qinfo = cmsg->addTag<SctpCommandReq>();
409 qinfo->setSocketId(
id);
421 EV_INFO <<
"Streams have been resetted\n";
433 sprintf(buf,
"rcvd: %ld bytes\nsent: %ld bytes", l->second,
bytesSent);
434 getDisplayString().setTagArg(
"t", 0, buf);
◆ handleTimer()
| void inet::SctpPeer::handleTimer |
( |
cMessage * |
msg | ) |
|
|
protected |
440 EV_TRACE <<
"SctpPeer::handleTimer\n";
442 switch (msg->getKind()) {
444 EV_INFO <<
"starting session call connect\n";
451 if (par(
"thinkTime").doubleValue() > 0)
458 Request *cmsg =
new Request(
"SCTP_C_CLOSE",
SCTP_C_CLOSE);
459 auto& cmd = cmsg->addTag<SctpCommandReq>();
460 int id = atoi(msg->getName());
461 cmd->setSocketId(
id);
Referenced by handleMessage().
◆ initialize()
| void inet::SctpPeer::initialize |
( |
int |
stage | ) |
|
|
overrideprotectedvirtual |
85 cSimpleModule::initialize(stage);
96 const char *addressesString = par(
"localAddress");
97 AddressVector addresses = L3AddressResolver().resolve(cStringTokenizer(addressesString).asVector());
98 int port = par(
"localPort");
100 delay = par(
"echoDelay");
110 if (addresses.size() == 0) {
119 EV_DEBUG <<
"SctpPeer::initialized listen port=" << port <<
"\n";
123 if (simtime_t(par(
"startTime")) > SIMTIME_ZERO) {
129 NodeStatus *nodeStatus = node ? check_and_cast_nullable<NodeStatus *>(node->getSubmodule(
"status")) : nullptr;
130 bool isOperational = (!nodeStatus) || nodeStatus->getState() ==
NodeStatus::UP;
132 throw cRuntimeError(
"This module doesn't support starting in node DOWN state");
◆ msgAbandonedArrived()
| void inet::SctpPeer::msgAbandonedArrived |
( |
SctpSocket * |
socket | ) |
|
|
overrideprotectedvirtual |
◆ numInitStages()
| virtual int inet::SctpPeer::numInitStages |
( |
| ) |
const |
|
inlineoverrideprotectedvirtual |
◆ sendOrSchedule()
| void inet::SctpPeer::sendOrSchedule |
( |
cMessage * |
msg | ) |
|
|
protected |
◆ sendqueueFullArrived()
| void inet::SctpPeer::sendqueueFullArrived |
( |
SctpSocket * |
socket | ) |
|
|
overrideprotectedvirtual |
◆ sendQueueRequest()
| void inet::SctpPeer::sendQueueRequest |
( |
| ) |
|
|
protected |
◆ sendRequest()
| void inet::SctpPeer::sendRequest |
( |
bool |
last = true | ) |
|
|
protected |
541 long numBytes = par(
"requestLength");
546 EV_INFO <<
"SctpClient: sending " << numBytes <<
" data bytes\n";
548 auto cmsg =
new Packet(
"ApplicationPacket");
549 auto msg = makeShared<BytesChunk>();
550 std::vector<uint8_t> vec;
551 vec.resize(numBytes);
552 for (
int i = 0; i < numBytes; i++)
555 msg->addTag<CreationTimeTag>()->setCreationTime(simTime());
556 cmsg->insertAtBack(msg);
558 auto sendCommand = cmsg->addTag<SctpSendReq>();
559 sendCommand->setLast(
true);
Referenced by sendRequestArrived(), and socketEstablished().
◆ sendRequestArrived()
| void inet::SctpPeer::sendRequestArrived |
( |
SctpSocket * |
socket | ) |
|
|
overrideprotectedvirtual |
◆ setStatusString()
| void inet::SctpPeer::setStatusString |
( |
const char * |
s | ) |
|
|
protected |
◆ shutdownReceivedArrived()
| void inet::SctpPeer::shutdownReceivedArrived |
( |
SctpSocket * |
socket | ) |
|
|
overrideprotectedvirtual |
Reimplemented from inet::SctpSocket::ICallback.
686 auto& qinfo = cmsg->addTag<SctpCommandReq>();
687 qinfo->setSocketId(socket->getSocketId());
◆ socketAvailable()
|
|
inlineoverrideprotectedvirtual |
◆ socketClosed()
| void inet::SctpPeer::socketClosed |
( |
SctpSocket * |
socket | ) |
|
|
overrideprotectedvirtual |
◆ socketDataArrived()
| void inet::SctpPeer::socketDataArrived |
( |
SctpSocket * |
socket, |
|
|
Packet * |
msg, |
|
|
bool |
urgent |
|
) |
| |
|
overrideprotectedvirtual |
Implements inet::SctpSocket::ICallback.
651 EV_INFO <<
"Client received packet Nr " <<
packetsRcvd <<
" from SCTP\n";
653 auto&
tags = msg->getTags();
654 const auto& ind =
tags.findTag<SctpRcvReq>();
660 const auto& smsg = msg->peekData();
661 auto cmsg =
new Packet(
"ApplicationPacket");
663 cmsg->insertAtBack(smsg);
664 auto cmd = cmsg->addTag<SctpSendReq>();
666 cmd->setSocketId(ind->getSocketId());
668 cmd->setSid(ind->getSid());
673 if (par(
"numPacketsToReceive").intValue() > 0) {
◆ socketDataNotificationArrived()
| void inet::SctpPeer::socketDataNotificationArrived |
( |
SctpSocket * |
socket, |
|
|
Message * |
msg |
|
) |
| |
|
overrideprotectedvirtual |
Implements inet::SctpSocket::ICallback.
478 Message *message = check_and_cast<Message *>(msg);
479 auto& intags = message->getTags();
480 const auto& ind = intags.findTag<SctpCommandReq>();
482 auto& cmd = cmesg->addTag<SctpSendReq>();
483 cmd->setSocketId(ind->getSocketId());
484 cmd->setSid(ind->getSid());
485 cmd->setNumMsgs(ind->getNumMsgs());
◆ socketEstablished()
| void inet::SctpPeer::socketEstablished |
( |
SctpSocket * |
socket, |
|
|
unsigned long int |
buffer |
|
) |
| |
|
overrideprotectedvirtual |
Reimplemented from inet::SctpSocket::ICallback.
570 EV_INFO <<
"SctpClient: connected\n";
581 if (par(
"thinkTime").doubleValue() > 0) {
588 scheduleAfter(par(
"thinkTime"),
timeMsg);
609 scheduleAfter(par(
"waitToClose"),
timeMsg);
613 EV_INFO <<
"socketEstablished:no more packets to send, call shutdown\n";
◆ socketFailure()
| void inet::SctpPeer::socketFailure |
( |
SctpSocket * |
socket, |
|
|
int |
code |
|
) |
| |
|
overrideprotectedvirtual |
◆ socketPeerClosed()
| void inet::SctpPeer::socketPeerClosed |
( |
SctpSocket * |
socket | ) |
|
|
overrideprotectedvirtual |
◆ socketStatusArrived()
Reimplemented from inet::SctpSocket::ICallback.
518 struct PathStatus
ps;
523 ps.active = status->getActive();
526 ps.active = status->getActive();
527 ps.primaryPath =
false;
◆ bytesPerAssoc
◆ bytesRcvd
| int inet::SctpPeer::bytesRcvd |
|
protected |
◆ bytesSent
| long inet::SctpPeer::bytesSent |
|
protected |
◆ chunksAbandoned
| int inet::SctpPeer::chunksAbandoned |
|
protected |
◆ clientSocket
Referenced by connect(), handleMessage(), initialize(), sendQueueRequest(), sendRequest(), sendRequestArrived(), shutdownReceivedArrived(), socketDataArrived(), socketDataNotificationArrived(), socketEstablished(), and socketPeerClosed().
◆ connectTimer
| cMessage* inet::SctpPeer::connectTimer |
|
protected |
◆ delay
| double inet::SctpPeer::delay |
|
protected |
◆ echo
| bool inet::SctpPeer::echo |
|
protected |
◆ echoedBytesSent
| int inet::SctpPeer::echoedBytesSent |
|
protected |
◆ echoedPkSignal
| simsignal_t inet::SctpPeer::echoedPkSignal = registerSignal("echoedPk") |
|
staticprotected |
◆ endToEndDelay
◆ histEndToEndDelay
◆ inboundStreams
| int inet::SctpPeer::inboundStreams |
|
protected |
◆ lastStream
| int inet::SctpPeer::lastStream |
|
protected |
◆ listeningSocket
◆ notificationsReceived
| int inet::SctpPeer::notificationsReceived |
|
protected |
◆ numPacketsToReceive
| int inet::SctpPeer::numPacketsToReceive |
|
protected |
◆ numRequestsToSend
| int inet::SctpPeer::numRequestsToSend |
|
protected |
◆ numSessions
| int inet::SctpPeer::numSessions |
|
protected |
◆ ordered
| bool inet::SctpPeer::ordered |
|
protected |
◆ outboundStreams
| int inet::SctpPeer::outboundStreams |
|
protected |
◆ packetsRcvd
| int inet::SctpPeer::packetsRcvd |
|
protected |
◆ packetsSent
| int inet::SctpPeer::packetsSent |
|
protected |
◆ queueSize
| int inet::SctpPeer::queueSize |
|
protected |
◆ rcvdBytesPerAssoc
◆ rcvdPacketsPerAssoc
◆ schedule
| bool inet::SctpPeer::schedule |
|
protected |
◆ sctpPathStatus
◆ sendAllowed
| bool inet::SctpPeer::sendAllowed |
|
protected |
◆ sentPacketsPerAssoc
◆ serverAssocId
| int inet::SctpPeer::serverAssocId |
|
protected |
◆ shutdownReceived
| bool inet::SctpPeer::shutdownReceived |
|
protected |
◆ timeMsg
| cMessage* inet::SctpPeer::timeMsg |
|
protected |
◆ timeoutMsg
| cMessage* inet::SctpPeer::timeoutMsg |
|
protected |
The documentation for this class was generated from the following files:
@ SCTP_I_RCV_STREAMS_RESETTED
Definition: SctpCommand_m.h:214
cModule * findContainingNode(const cModule *from)
Find the node containing the given module.
Definition: ModuleAccess.cc:31
void processMessage(cMessage *msg) override
Examines the message (which should have arrived from SctpMain), updates socket state,...
Definition: SctpSocket.cc:461
double delay
Definition: SctpPeer.h:43
@ SCTP_C_SEND_UNORDERED
Definition: SctpCommand_m.h:138
bool shutdownReceived
Definition: SctpPeer.h:58
bool schedule
Definition: SctpPeer.h:46
void setStreamPriority(uint32_t stream, uint32_t priority)
Definition: SctpSocket.cc:620
cMessage * timeMsg
Definition: SctpPeer.h:56
std::vector< L3Address > AddressVector
Definition: SctpCommand_m.h:70
void setOutputGate(cGate *toSctp)
Sets the gate on which to send to SCTP.
Definition: SctpSocket.h:174
void sendRequest(bool last=true)
Definition: SctpPeer.cc:538
#define MSGKIND_RESET
Definition: SctpPeer.cc:26
@ SCTP_I_CLOSED
Definition: SctpCommand_m.h:201
int getSocketId() const override
Returns the internal connection Id.
Definition: SctpSocket.h:138
@ CONNECTED
Definition: SctpSocket.h:80
int count(const std::vector< T > &v, const Tk &a)
Definition: stlutils.h:54
virtual void send(Packet *packet) override
Send data message.
Definition: SctpSocket.cc:355
void shutdown(int id=-1)
Definition: SctpSocket.cc:408
void sendRequest(cMessage *msg)
Send request.
Definition: SctpSocket.cc:389
int getState() const
Returns the socket state, one of NOT_BOUND, CLOSED, LISTENING, CONNECTING, CONNECTED,...
Definition: SctpSocket.h:151
int packetsSent
Definition: SctpPeer.h:74
int echoedBytesSent
Definition: SctpPeer.h:73
void setCallback(ICallback *cb)
Sets a callback object, to be used with processMessage().
Definition: SctpSocket.cc:456
removed DscpReq Ipv4ControlInfo Ipv6ControlInfo up L3AddressInd DispatchProtocolReq L4PortInd Ipv4ControlInfo Ipv6ControlInfo down DispatchProtocolReq
Definition: IUdp-gates.txt:25
@ SCTP_C_SEND
Definition: SctpCommand_m.h:132
int bytesRcvd
Definition: SctpPeer.h:75
@ SCTP_C_SHUTDOWN
Definition: SctpCommand_m.h:142
@ SCTP_I_SEND_STREAMS_RESETTED
Definition: SctpCommand_m.h:213
void sendNotification(cMessage *msg)
Send notification.
Definition: SctpSocket.cc:377
int inboundStreams
Definition: SctpPeer.h:49
#define MSGKIND_SEND
Definition: SctpPeer.cc:23
int queueSize
Definition: SctpPeer.h:47
long bytesSent
Definition: SctpPeer.h:72
int outboundStreams
Definition: SctpPeer.h:48
@ SCTP_C_RECEIVE
Definition: SctpCommand_m.h:136
@ SCTP_I_DATA
Definition: SctpCommand_m.h:197
int notificationsReceived
Definition: SctpPeer.h:77
bool echo
Definition: SctpPeer.h:44
EndToEndDelay endToEndDelay
Definition: SctpPeer.h:71
@ SCTP_C_ABORT
Definition: SctpCommand_m.h:134
int numPacketsToReceive
Definition: SctpPeer.h:63
void close(int id)
Closes the local end of the connection.
Definition: SctpSocket.cc:394
#define MSGKIND_CONNECT
Definition: SctpPeer.cc:22
HistEndToEndDelay histEndToEndDelay
Definition: SctpPeer.h:70
SctpPathStatus sctpPathStatus
Definition: SctpPeer.h:52
@ SCTP_I_ESTABLISHED
Definition: SctpCommand_m.h:199
value< double, units::s > s
Definition: Units.h:1235
intscale< b, 1, 8 > B
Definition: Units.h:1168
void listen(bool fork=true, bool streamReset=false, uint32_t requests=0, uint32_t messagesToPush=0)
Initiates passive OPEN.
Definition: SctpSocket.cc:183
@ SCTP_C_SEND_ORDERED
Definition: SctpCommand_m.h:137
void setOutboundStreams(int streams)
Setter and getter methods for socket and API Parameters.
Definition: SctpSocket.h:179
simsignal_t packetReceivedSignal
Definition: Simsignals.cc:97
@ SCTP_I_SHUTDOWN_RECEIVED
Definition: SctpCommand_m.h:209
@ SCTP_C_NO_OUTSTANDING
Definition: SctpCommand_m.h:143
@ SCTP_I_PEER_CLOSED
Definition: SctpCommand_m.h:200
cMessage * timeoutMsg
Definition: SctpPeer.h:55
SctpSocket clientSocket
Definition: SctpPeer.h:53
void setStatusString(const char *s)
Definition: SctpPeer.cc:532
@ SCTP_C_QUEUE_MSGS_LIMIT
Definition: SctpCommand_m.h:141
void bindx(AddressVector localAddr, int localPort)
Definition: SctpSocket.cc:171
INET_API InitStage INITSTAGE_LOCAL
Initialization of local state that don't use or affect other modules includes:
#define NUM_INIT_STAGES
Definition: InitStageRegistry.h:73
@ SCTP_I_DATA_NOTIFICATION
Definition: SctpCommand_m.h:198
int numRequestsToSend
Definition: SctpPeer.h:61
const double k
Definition: Qam1024Modulation.cc:14
#define PK(msg)
Definition: INETDefs.h:89
int lastStream
Definition: SctpPeer.h:62
void connect(L3Address remoteAddress, int32_t remotePort, bool streamReset=false, int32_t prMethod=0, uint32_t numRequests=0)
Active OPEN to the given remote socket.
Definition: SctpSocket.cc:241
SentPacketsPerAssoc sentPacketsPerAssoc
Definition: SctpPeer.h:67
INET_API InitStage INITSTAGE_APPLICATION_LAYER
Initialization of applications.
@ CONNECTING
Definition: SctpSocket.h:80
RcvdBytesPerAssoc rcvdBytesPerAssoc
Definition: SctpPeer.h:68
@ SCTP_I_ABORT
Definition: SctpCommand_m.h:206
@ UP
Definition: NodeStatus.h:28
static const Protocol sctp
Definition: Protocol.h:108
void sendOrSchedule(cMessage *msg)
Definition: SctpPeer.cc:136
pico< s >::type ps
Definition: Units.h:1073
cMessage * connectTimer
Definition: SctpPeer.h:57
int chunksAbandoned
Definition: SctpPeer.h:79
* tags
Definition: IUdp-gates.txt:3
void handleTimer(cMessage *msg)
Definition: SctpPeer.cc:438
RcvdPacketsPerAssoc rcvdPacketsPerAssoc
Definition: SctpPeer.h:66
BytesPerAssoc bytesPerAssoc
Definition: SctpPeer.h:69
int numSessions
Definition: SctpPeer.h:78
void generateAndSend()
Definition: SctpPeer.cc:146
value< double, units::m > m
Definition: Units.h:1233
bool sendAllowed
Definition: SctpPeer.h:59
SctpSocket listeningSocket
Definition: SctpPeer.h:54
#define MSGKIND_ABORT
Definition: SctpPeer.cc:24
void connect()
Definition: SctpPeer.cc:173
void bind(int localPort)
Bind the socket to a local port number.
Definition: SctpSocket.cc:142
@ SCTP_C_CLOSE
Definition: SctpCommand_m.h:133
@ PEER_CLOSED
Definition: SctpSocket.h:80
int packetsRcvd
Definition: SctpPeer.h:76
void sendQueueRequest()
Definition: SctpPeer.cc:620
void setInboundStreams(int streams)
Definition: SctpSocket.h:180
int serverAssocId
Definition: SctpPeer.h:60
bool ordered
Definition: SctpPeer.h:45