Changes

207 bytes removed ,  21:14, 14 May 2013
no edit summary
Line 3: Line 3:  
Currently we support Unix socket of all kinds, UDP both IPv4 and IPv6 and TCP in Listen and (!) [[TCP connection|Established states]].
 
Currently we support Unix socket of all kinds, UDP both IPv4 and IPv6 and TCP in Listen and (!) [[TCP connection|Established states]].
   −
The cpt part uses the sock_diag engine that was merged to Dave recently to
+
The cpt part uses the sock_diag engine to collect extended information about socket. Then it drains sockets from the target tasks using SCM_RIGHTS sending.
collect sockets. Then it dumps sockets by checking the filesystem ID of a
  −
failed-to-open through /proc/pid/fd descriptors (sockets do not allow for
  −
such tricks with opens through proc) against SOCKFS_TYPE.
     −
The restore part is more tricky. Listen sockets are just restored, this is simple.
+
The restore part of Unix sockets is the most tricky part. Listen sockets are just restored, this is simple.
 
Connected sockets are restored like this:
 
Connected sockets are restored like this:
   Line 16: Line 13:  
# ... all listening sockets call accept() and ... dup2 the new fd into the accepting end.
 
# ... all listening sockets call accept() and ... dup2 the new fd into the accepting end.
   −
There's a problem with this approach -- socket names are not preserved, but
+
There's a problem with this approach -- socket names are not preserved, but looking into our OpenVZ implementation I think this is OK for existing apps.
looking into our OpenVZ implementation I think this is OK for existing apps.
  −
 
  −
=== What should be done next ===
  −
 
  −
* socket filter (SK_ATTACH_FILTER)
  −
* various (ip/tcp level) sockoptions
      
[[Category:Under the hood]]
 
[[Category:Under the hood]]