]> git.ipfire.org Git - thirdparty/haproxy.git/commit
MINOR: listener: add the "accept-netscaler-cip" option to the "bind" keyword
authorBertrand Jacquin <jacquinb@amazon.com>
Sat, 4 Jun 2016 14:11:10 +0000 (15:11 +0100)
committerWilly Tarreau <w@1wt.eu>
Mon, 20 Jun 2016 21:02:47 +0000 (23:02 +0200)
commit93b227db9502f72f894c83708cd49c41925158b2
tree82fdf2b9b2d7969d6a27fefa64b49a9a88b61001
parent24b892f32441369bf7b5b6c2c017ee7ff732f23b
MINOR: listener: add the "accept-netscaler-cip" option to the "bind" keyword

When NetScaler application switch is used as L3+ switch, informations
regarding the original IP and TCP headers are lost as a new TCP
connection is created between the NetScaler and the backend server.

NetScaler provides a feature to insert in the TCP data the original data
that can then be consumed by the backend server.

Specifications and documentations from NetScaler:
  https://support.citrix.com/article/CTX205670
  https://www.citrix.com/blogs/2016/04/25/how-to-enable-client-ip-in-tcpip-option-of-netscaler/

When CIP is enabled on the NetScaler, then a TCP packet is inserted just after
the TCP handshake. This is composed as:

  - CIP magic number : 4 bytes
    Both sender and receiver have to agree on a magic number so that
    they both handle the incoming data as a NetScaler Client IP insertion
    packet.

  - Header length : 4 bytes
    Defines the length on the remaining data.

  - IP header : >= 20 bytes if IPv4, 40 bytes if IPv6
    Contains the header of the last IP packet sent by the client during TCP
    handshake.

  - TCP header : >= 20 bytes
    Contains the header of the last TCP packet sent by the client during TCP
    handshake.
doc/configuration.txt
doc/netscaler-client-ip-insertion-protocol.txt [new file with mode: 0644]
include/proto/connection.h
include/types/connection.h
include/types/listener.h
src/connection.c
src/listener.c
src/session.c