From d9380a8cb5d865617b90a43ba74fef1923472459 Mon Sep 17 00:00:00 2001 From: Jason Ish Date: Wed, 30 Dec 2009 16:08:41 -0800 Subject: [PATCH] solaris policy for ipv6 --- src/defrag.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/src/defrag.c b/src/defrag.c index 242764c758..4638d39faf 100644 --- a/src/defrag.c +++ b/src/defrag.c @@ -759,6 +759,18 @@ Defrag6InsertFrag(DefragContext *dc, DefragTracker *tracker, Packet *p) goto insert; } break; + case POLICY_SOLARIS: + if (frag_offset < prev->offset + prev->data_len) { + if (frag_offset >= prev->offset) { + ltrim = prev->offset + prev->data_len - frag_offset; + } + if ((frag_offset < prev->offset) && + (frag_end >= prev->offset + prev->data_len)) { + prev->skip = 1; + } + goto insert; + } + break; default: break; } @@ -2055,6 +2067,41 @@ DefragSturgesNovakSolarisTest(void) return DefragDoSturgesNovakTest(POLICY_SOLARIS, expected, sizeof(expected)); } +static int +IPV6DefragSturgesNovakSolarisTest(void) +{ + /* Expected data. */ + u_char expected[] = { + "AAAAAAAA" + "AAAAAAAA" + "AAAAAAAA" + "JJJJJJJJ" + "BBBBBBBB" + "BBBBBBBB" + "CCCCCCCC" + "CCCCCCCC" + "CCCCCCCC" + "LLLLLLLL" + "LLLLLLLL" + "LLLLLLLL" + "MMMMMMMM" + "MMMMMMMM" + "MMMMMMMM" + "FFFFFFFF" + "FFFFFFFF" + "FFFFFFFF" + "GGGGGGGG" + "GGGGGGGG" + "HHHHHHHH" + "HHHHHHHH" + "IIIIIIII" + "QQQQQQQQ" + }; + + return IPV6DefragDoSturgesNovakTest(POLICY_SOLARIS, expected, + sizeof(expected)); +} + static int DefragSturgesNovakFirstTest(void) { @@ -2229,6 +2276,8 @@ DefragRegisterTests(void) IPV6DefragSturgesNovakLinuxTest, 1); UtRegisterTest("IPV6DefragSturgesNovakWindowsTest", IPV6DefragSturgesNovakWindowsTest, 1); + UtRegisterTest("IPV6DefragSturgesNovakSolarisTest", + IPV6DefragSturgesNovakSolarisTest, 1); #endif /* UNITTESTS */ }