The following issues with the current socket layer hinders socket diagnostics
implementation, which led to this patch series.
1. tipc socket state is derived from multiple variables like
sock->state, tsk->probing_state and tsk->connected. This style forces
us to export multiple attributes to the user space, which has to be
backward compatible.
2. Abuse of sock->state cannot be exported to user-space without
requiring tipc specific hacks in the user-space.
- For connection less (CL) sockets sock->state is overloaded to
tipc state SS_READY.
- For connection oriented (CO) listening socket sock->state is
overloaded to tipc state SS_LISTEN.
This series is split into three:
1. A bug fix in patch-1
2. Express all tipc states using a single variable. This is done in patch#2-5.
3. Migrate the new tipc states to sk->sk_state. This is done in patch#6-12.
The figures below represents the FSM after this series:
Unconnected Sockets:
+------------------+ +--------------------+
| TIPC_UNCONNECTED |------->| TIPC_DISCONNECTING |
+------------------+ +--------------------+
Stream Server Listening Socket:
+------------------+ +-------------+
| TIPC_UNCONNECTED |------->| TIPC_LISTEN |
+------------------+ +-------------+
|
+--------------------+ |
| TIPC_DISCONNECTING |<-----------+
+--------------------+
Stream Server Data Socket:
+-----------------+ +------------------+
|TIPC_UNCONNECTED |------> | TIPC_ESTABLISHED |<---+
+-----------------+ +------------------+ |
^ | | |
| | +----------+
| v
+------------------+ +-------------+
|TIPC_DISCONNECTING|<-----|TIPC_PROBING |
+------------------+ +-------------+
Stream Socket Client:
+-----------------+ +-----------------+
|TIPC_UNCONNECTED |------>| TIPC_CONNECTING |
+-----------------+ +-----------------+
|
|
v
+------------------+
| TIPC_ESTABLISHED |<---+
+------------------+ |
^ | | |
| | +---------+
| v
+------------------+ +-------------+
|TIPC_DISCONNECTING|<-----|TIPC_PROBING |
+------------------+ +-------------+
NOTE:
This is just a base refractoring required for socket diagnostics.
The patches for socket diagnostics will be sent when they are ready.
Parthasarathy Bhuvaragan (12):
tipc: set kern=0 in sk_alloc() during tipc_accept()
tipc: rename tsk->remote to tsk->peer for consistent naming
tipc: remove tsk->connected for connection less sockets
tipc: remove tsk->connected from tipc_sock
tipc: remove probing_intv from tipc_sock
tipc: remove socket state SS_READY
tipc: create TIPC_LISTEN as a new sk_state
tipc: create TIPC_PROBING/TIPC_ESTABLISHED as new sk_states
tipc: create TIPC_UNCONNECTED as a new sk_state
tipc: create TIPC_DISCONNECTING as a new sk_state
tipc: create TIPC_CONNECTING as a new sk_state
tipc: remove SS_CONNECTED sock state
include/uapi/linux/tipc.h | 12 ++
net/tipc/socket.c | 344 ++++++++++++++++++++++++++--------------------
2 files changed, 207 insertions(+), 149 deletions(-)
--
2.1.4
------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are
consuming the most bandwidth. Provides multi-vendor support for NetFlow,
J-Flow, sFlow and other flows. Make informed decisions using capacity planning
reports.http://sdm.link/zohodev2dev
_______________________________________________
tipc-discussion mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tipc-discussion