[MINOR] frontend: only check for monitor-net rules if LI_O_CHK_MONNET is set
We can disable the monitor-net rules on a listener if this flag is not set in the listener's options. This will be useful when we don't want to check that fe->addr is set or not for non-TCP frontends.
This commit is contained in:
parent
a5c0ab200b
commit
de3041d443
|
@ -73,6 +73,7 @@
|
|||
#define LI_O_NOQUICKACK 0x0004 /* disable quick ack of immediate data (linux) */
|
||||
#define LI_O_DEF_ACCEPT 0x0008 /* wait up to 1 second for data before accepting */
|
||||
#define LI_O_TCP_RULES 0x0010 /* run TCP rules checks on the incoming connection */
|
||||
#define LI_O_CHK_MONNET 0x0020 /* check the source against a monitor-net rule */
|
||||
|
||||
/* The listener will be directly referenced by the fdtab[] which holds its
|
||||
* socket. The listener provides the protocol-specific accept() function to
|
||||
|
|
|
@ -5359,6 +5359,9 @@ int check_config_validity()
|
|||
if (!LIST_ISEMPTY(&curproxy->tcp_req.l4_rules))
|
||||
listener->options |= LI_O_TCP_RULES;
|
||||
|
||||
if (curproxy->mon_mask.s_addr)
|
||||
listener->options |= LI_O_CHK_MONNET;
|
||||
|
||||
/* smart accept mode is automatic in HTTP mode */
|
||||
if ((curproxy->options2 & PR_O2_SMARTACC) ||
|
||||
(curproxy->mode == PR_MODE_HTTP &&
|
||||
|
|
|
@ -79,7 +79,7 @@ int frontend_accept(struct listener *l, int cfd, struct sockaddr_storage *addr)
|
|||
/* if this session comes from a known monitoring system, we want to ignore
|
||||
* it as soon as possible, which means closing it immediately for TCP.
|
||||
*/
|
||||
if (unlikely(p->mon_mask.s_addr &&
|
||||
if (unlikely((l->options & LI_O_CHK_MONNET) &&
|
||||
addr->ss_family == AF_INET &&
|
||||
(((struct sockaddr_in *)addr)->sin_addr.s_addr & p->mon_mask.s_addr) == p->mon_net.s_addr)) {
|
||||
if (p->mode == PR_MODE_TCP) {
|
||||
|
|
Loading…
Reference in New Issue