Dont create nat rule for Port Triggering, but a pass rule

should fix #529
This commit is contained in:
Thomas Bernard 2022-05-18 08:16:54 +02:00
parent 6d59337a57
commit a255df2488
No known key found for this signature in database
GPG Key ID: DB511043A31ACAAF
1 changed files with 10 additions and 0 deletions

View File

@ -350,7 +350,12 @@ int add_nat_rule(const char * ifname,
pcr.rule.src.addr.type = PF_ADDR_ADDRMASK; pcr.rule.src.addr.type = PF_ADDR_ADDRMASK;
pcr.rule.dst.addr.type = PF_ADDR_ADDRMASK; pcr.rule.dst.addr.type = PF_ADDR_ADDRMASK;
#ifndef PF_NEWSTYLE
pcr.rule.action = PF_NAT; pcr.rule.action = PF_NAT;
#else
pcr.rule.action = PF_PASS; /* or PF_MATCH as we dont expect outbound packets to be blocked */
pcr.rule.direction = PF_OUT;
#endif
pcr.rule.af = AF_INET; pcr.rule.af = AF_INET;
#ifdef USE_IFNAME_IN_RULES #ifdef USE_IFNAME_IN_RULES
if(ifname) if(ifname)
@ -465,7 +470,12 @@ delete_nat_rule(const char * ifname, unsigned short iport, int proto, in_addr_t
} }
memset(&pr, 0, sizeof(pr)); memset(&pr, 0, sizeof(pr));
strlcpy(pr.anchor, anchor_name, MAXPATHLEN); strlcpy(pr.anchor, anchor_name, MAXPATHLEN);
#ifndef PF_NEWSTYLE
pr.rule.action = PF_NAT; pr.rule.action = PF_NAT;
#else
pr.rule.action = PF_PASS; /* or PF_MATCH as we dont expect outbound packets to be blocked */
pr.rule.direction = PF_OUT;
#endif
if(ioctl(dev, DIOCGETRULES, &pr) < 0) if(ioctl(dev, DIOCGETRULES, &pr) < 0)
{ {
syslog(LOG_ERR, "ioctl(dev, DIOCGETRULES, ...): %m"); syslog(LOG_ERR, "ioctl(dev, DIOCGETRULES, ...): %m");