mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04:00
Don't get caught in an infinite recursion when PKT_ALIAS_REVERSE
is set. Document PKT_ALIAS_REVERSE. Pointed out by: Jonathan Hanna <jh@cr1003333-a.crdva1.bc.home.com> PR: 12304
This commit is contained in:
parent
378d10a91d
commit
0622eafc89
4 changed files with 36 additions and 10 deletions
|
|
@ -1174,8 +1174,12 @@ PacketAliasIn(char *ptr, int maxpacketsize)
|
|||
struct ip *pip;
|
||||
int iresult;
|
||||
|
||||
if (packetAliasMode & PKT_ALIAS_REVERSE)
|
||||
return PacketAliasOut(ptr, maxpacketsize);
|
||||
if (packetAliasMode & PKT_ALIAS_REVERSE) {
|
||||
packetAliasMode &= ~PKT_ALIAS_REVERSE;
|
||||
iresult = PacketAliasOut(ptr, maxpacketsize);
|
||||
packetAliasMode |= PKT_ALIAS_REVERSE;
|
||||
return iresult;
|
||||
}
|
||||
|
||||
HouseKeeping();
|
||||
ClearCheckNewLink();
|
||||
|
|
@ -1256,8 +1260,12 @@ PacketAliasOut(char *ptr, /* valid IP packet */
|
|||
struct in_addr addr_save;
|
||||
struct ip *pip;
|
||||
|
||||
if (packetAliasMode & PKT_ALIAS_REVERSE)
|
||||
return PacketAliasIn(ptr, maxpacketsize);
|
||||
if (packetAliasMode & PKT_ALIAS_REVERSE) {
|
||||
packetAliasMode &= ~PKT_ALIAS_REVERSE;
|
||||
iresult = PacketAliasIn(ptr, maxpacketsize);
|
||||
packetAliasMode |= PKT_ALIAS_REVERSE;
|
||||
return iresult;
|
||||
}
|
||||
|
||||
HouseKeeping();
|
||||
ClearCheckNewLink();
|
||||
|
|
|
|||
|
|
@ -247,7 +247,7 @@ If this mode bit is not set, it the link table
|
|||
will never be reset in the event of an
|
||||
address change.
|
||||
.It PKT_ALIAS_PUNCH_FW.
|
||||
This option make libalias `punch holes' in an
|
||||
This option makes libalias `punch holes' in an
|
||||
ipfw based firewall for FTP/IRC DCC connections.
|
||||
The holes punched are bound by from/to IP address
|
||||
and port; it will not be possible to use a hole
|
||||
|
|
@ -259,6 +259,11 @@ clear the entire ipfw range allocated for holes.
|
|||
This will also happen on the initial call to
|
||||
PacketAliasSetFWBase(). This call must happen
|
||||
prior to setting this flag.
|
||||
.It PKT_ALIAS_REVERSE.
|
||||
This option makes libalias reverse the way it
|
||||
handles incoming and outgoing packets, allowing
|
||||
it to be fed data that passes through the internal
|
||||
interface rather than the external one.
|
||||
|
||||
.El
|
||||
|
||||
|
|
|
|||
|
|
@ -1174,8 +1174,12 @@ PacketAliasIn(char *ptr, int maxpacketsize)
|
|||
struct ip *pip;
|
||||
int iresult;
|
||||
|
||||
if (packetAliasMode & PKT_ALIAS_REVERSE)
|
||||
return PacketAliasOut(ptr, maxpacketsize);
|
||||
if (packetAliasMode & PKT_ALIAS_REVERSE) {
|
||||
packetAliasMode &= ~PKT_ALIAS_REVERSE;
|
||||
iresult = PacketAliasOut(ptr, maxpacketsize);
|
||||
packetAliasMode |= PKT_ALIAS_REVERSE;
|
||||
return iresult;
|
||||
}
|
||||
|
||||
HouseKeeping();
|
||||
ClearCheckNewLink();
|
||||
|
|
@ -1256,8 +1260,12 @@ PacketAliasOut(char *ptr, /* valid IP packet */
|
|||
struct in_addr addr_save;
|
||||
struct ip *pip;
|
||||
|
||||
if (packetAliasMode & PKT_ALIAS_REVERSE)
|
||||
return PacketAliasIn(ptr, maxpacketsize);
|
||||
if (packetAliasMode & PKT_ALIAS_REVERSE) {
|
||||
packetAliasMode &= ~PKT_ALIAS_REVERSE;
|
||||
iresult = PacketAliasIn(ptr, maxpacketsize);
|
||||
packetAliasMode |= PKT_ALIAS_REVERSE;
|
||||
return iresult;
|
||||
}
|
||||
|
||||
HouseKeeping();
|
||||
ClearCheckNewLink();
|
||||
|
|
|
|||
|
|
@ -247,7 +247,7 @@ If this mode bit is not set, it the link table
|
|||
will never be reset in the event of an
|
||||
address change.
|
||||
.It PKT_ALIAS_PUNCH_FW.
|
||||
This option make libalias `punch holes' in an
|
||||
This option makes libalias `punch holes' in an
|
||||
ipfw based firewall for FTP/IRC DCC connections.
|
||||
The holes punched are bound by from/to IP address
|
||||
and port; it will not be possible to use a hole
|
||||
|
|
@ -259,6 +259,11 @@ clear the entire ipfw range allocated for holes.
|
|||
This will also happen on the initial call to
|
||||
PacketAliasSetFWBase(). This call must happen
|
||||
prior to setting this flag.
|
||||
.It PKT_ALIAS_REVERSE.
|
||||
This option makes libalias reverse the way it
|
||||
handles incoming and outgoing packets, allowing
|
||||
it to be fed data that passes through the internal
|
||||
interface rather than the external one.
|
||||
|
||||
.El
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue