Changeset View
Changeset View
Standalone View
Standalone View
sys/netinet/libalias/alias.c
Show First 20 Lines • Show All 1,407 Lines • ▼ Show 20 Lines | |||||
/* 172.16.0.0 -> 172.31.255.255 */ | /* 172.16.0.0 -> 172.31.255.255 */ | ||||
#define UNREG_ADDR_B_LOWER 0xac100000 | #define UNREG_ADDR_B_LOWER 0xac100000 | ||||
#define UNREG_ADDR_B_UPPER 0xac1fffff | #define UNREG_ADDR_B_UPPER 0xac1fffff | ||||
/* 192.168.0.0 -> 192.168.255.255 */ | /* 192.168.0.0 -> 192.168.255.255 */ | ||||
#define UNREG_ADDR_C_LOWER 0xc0a80000 | #define UNREG_ADDR_C_LOWER 0xc0a80000 | ||||
#define UNREG_ADDR_C_UPPER 0xc0a8ffff | #define UNREG_ADDR_C_UPPER 0xc0a8ffff | ||||
/* 100.64.0.0 -> 100.127.255.255 (RFC 6598) */ | |||||
#define UNREG_ADDR_RFC6598_LOWER 0x64400000 | |||||
#define UNREG_ADDR_RFC6598_UPPER 0x647fffff | |||||
int | int | ||||
LibAliasOut(struct libalias *la, char *ptr, int maxpacketsize) | LibAliasOut(struct libalias *la, char *ptr, int maxpacketsize) | ||||
{ | { | ||||
int res; | int res; | ||||
LIBALIAS_LOCK(la); | LIBALIAS_LOCK(la); | ||||
res = LibAliasOutLocked(la, ptr, maxpacketsize, 1); | res = LibAliasOutLocked(la, ptr, maxpacketsize, 1); | ||||
LIBALIAS_UNLOCK(la); | LIBALIAS_UNLOCK(la); | ||||
Show All 35 Lines | ) | ||||
/* Defense against mangled packets */ | /* Defense against mangled packets */ | ||||
if (ntohs(pip->ip_len) > maxpacketsize | if (ntohs(pip->ip_len) > maxpacketsize | ||||
|| (pip->ip_hl << 2) > maxpacketsize) { | || (pip->ip_hl << 2) > maxpacketsize) { | ||||
iresult = PKT_ALIAS_IGNORED; | iresult = PKT_ALIAS_IGNORED; | ||||
goto getout; | goto getout; | ||||
} | } | ||||
addr_save = GetDefaultAliasAddress(la); | addr_save = GetDefaultAliasAddress(la); | ||||
if (la->packetAliasMode & PKT_ALIAS_UNREGISTERED_ONLY) { | if (la->packetAliasMode & PKT_ALIAS_UNREGISTERED_ONLY || | ||||
la->packetAliasMode & PKT_ALIAS_UNREGISTERED_RFC6598) { | |||||
u_long addr; | u_long addr; | ||||
int iclass; | int iclass; | ||||
iclass = 0; | iclass = 0; | ||||
addr = ntohl(pip->ip_src.s_addr); | addr = ntohl(pip->ip_src.s_addr); | ||||
if (addr >= UNREG_ADDR_C_LOWER && addr <= UNREG_ADDR_C_UPPER) | if (addr >= UNREG_ADDR_C_LOWER && addr <= UNREG_ADDR_C_UPPER) | ||||
iclass = 3; | iclass = 3; | ||||
else if (addr >= UNREG_ADDR_B_LOWER && addr <= UNREG_ADDR_B_UPPER) | else if (addr >= UNREG_ADDR_B_LOWER && addr <= UNREG_ADDR_B_UPPER) | ||||
iclass = 2; | iclass = 2; | ||||
else if (addr >= UNREG_ADDR_A_LOWER && addr <= UNREG_ADDR_A_UPPER) | else if (addr >= UNREG_ADDR_A_LOWER && addr <= UNREG_ADDR_A_UPPER) | ||||
iclass = 1; | iclass = 1; | ||||
else if (addr >= UNREG_ADDR_RFC6598_LOWER && addr <= UNREG_ADDR_RFC6598_UPPER && | |||||
la->packetAliasMode & PKT_ALIAS_UNREGISTERED_RFC6598) | |||||
iclass = 4; | |||||
if (iclass == 0) { | if (iclass == 0) { | ||||
SetDefaultAliasAddress(la, pip->ip_src); | SetDefaultAliasAddress(la, pip->ip_src); | ||||
} | } | ||||
} else if (la->packetAliasMode & PKT_ALIAS_PROXY_ONLY) { | } else if (la->packetAliasMode & PKT_ALIAS_PROXY_ONLY) { | ||||
SetDefaultAliasAddress(la, pip->ip_src); | SetDefaultAliasAddress(la, pip->ip_src); | ||||
} | } | ||||
iresult = PKT_ALIAS_IGNORED; | iresult = PKT_ALIAS_IGNORED; | ||||
▲ Show 20 Lines • Show All 299 Lines • Show Last 20 Lines |