| Line 215: |
Line 215: |
| | * Skill level: beginner | | * Skill level: beginner |
| | * Language: Python | | * Language: Python |
| | + | |
| | + | === Add support for checkpoint/restore of CORK-ed UDP socket === |
| | + | |
| | + | '''Summary:''' Support C/R of corked UDP socket |
| | + | |
| | + | There's UDP_CORK option for sockets. As man page says: |
| | + | <pre> |
| | + | If this option is enabled, then all data output on this socket |
| | + | is accumulated into a single datagram that is transmitted when |
| | + | the option is disabled. This option should not be used in |
| | + | code intended to be portable. |
| | + | </pre> |
| | + | |
| | + | Currently criu refuses to dump this case, so it's effectively a bug. Supporting |
| | + | this will need extending the kernel API to allow criu read back the write queue |
| | + | of the socket (see [[TCP connection|how it's done]] for TCP sockets, for example). Then |
| | + | the queue is written into the image and is restored into the socket (with the CORK |
| | + | bit set too). |
| | + | |
| | + | '''Links:''' |
| | + | * https://github.com/checkpoint-restore/criu/issues/409 |
| | + | * https://github.com/criupatchwork/criu/commit/a532312 |
| | + | * [[Sockets]], [[TCP connection]] |
| | + | * [[https://groups.google.com/forum/#!topic/comp.os.linux.networking/Uz8PYiTCZSg UDP cork explained]] |
| | + | |
| | + | '''Details:''' |
| | + | * Skill level: intermediate (+linux kernel) |
| | + | * Language: C |
| | + | * Expected size: 350 hours |
| | + | * Mentors: Alexander Mikhalitsyn <alexander@mihalicyn.com>, Pavel Tikhomirov <ptikhomirov@virtuozzo.com>, Andrei Vagin <avagin@gmail.com> |
| | | | |
| | | | |