diff --git a/fuzzing/packet/.gitignore b/fuzzing/packet/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..818d7868797b745e3ae7288b3a38140ecff02e11
--- /dev/null
+++ b/fuzzing/packet/.gitignore
@@ -0,0 +1 @@
+packet-fuzz.zip
diff --git a/fuzzing/packet/Makefile b/fuzzing/packet/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..c4b419aee951dc61b5d91037828ac177735b2234
--- /dev/null
+++ b/fuzzing/packet/Makefile
@@ -0,0 +1,16 @@
+
+$(GOPATH)/bin/go-fuzz-build:
+	go get -u github.com/dvyukov/go-fuzz/...
+
+$(GOPATH)/bin/go-fuzz:
+	go get -u github.com/dvyukov/go-fuzz/...
+
+packet-fuzz.zip: $(GOPATH)/bin/go-fuzz-build
+	$(GOPATH)/bin/go-fuzz-build github.com/bio-routing/bio-rd/protocols/bgp/packet
+
+corpus:
+	mkdir -p corpus
+	go run gen_initial_corpus.go
+
+fuzz: packet-fuzz.zip corpus $(GOPATH)/bin/go-fuzz
+	$(GOPATH)/bin/go-fuzz -bin=./packet-fuzz.zip -workdir=.
diff --git a/fuzzing/packet/README.md b/fuzzing/packet/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..b7f396f1a377c3bf8437fe26dc04cb3e1216572f
--- /dev/null
+++ b/fuzzing/packet/README.md
@@ -0,0 +1,8 @@
+# Fuzzing
+
+To start a new fuzzing run, execute:
+```bash
+make fuzz
+```
+This will create an initial corpus if there is no corpus, download the fuzzing tool and build all required 
+assets.
\ No newline at end of file
diff --git a/fuzzing/packet/corpus/0.bytes b/fuzzing/packet/corpus/0.bytes
new file mode 100644
index 0000000000000000000000000000000000000000..78ebde2e66d5283d5601ba30a9cd3ebb3f054081
Binary files /dev/null and b/fuzzing/packet/corpus/0.bytes differ
diff --git a/fuzzing/packet/corpus/060a1ddeabb5354f79c43182a6d0f9252ddb7db8-1 b/fuzzing/packet/corpus/060a1ddeabb5354f79c43182a6d0f9252ddb7db8-1
new file mode 100644
index 0000000000000000000000000000000000000000..08dc6dddb954f97714f7dc009aed3130e5efd9c7
Binary files /dev/null and b/fuzzing/packet/corpus/060a1ddeabb5354f79c43182a6d0f9252ddb7db8-1 differ
diff --git a/fuzzing/packet/corpus/0a8e36b04544c744cf7915e2d85bf93c1dae13d0-4 b/fuzzing/packet/corpus/0a8e36b04544c744cf7915e2d85bf93c1dae13d0-4
new file mode 100644
index 0000000000000000000000000000000000000000..9694ef60b9f7abbade8a07127e047742cfcb7364
Binary files /dev/null and b/fuzzing/packet/corpus/0a8e36b04544c744cf7915e2d85bf93c1dae13d0-4 differ
diff --git a/fuzzing/packet/corpus/0ace70936b8b67cfeeed133ff8f281b00d502e1b-1 b/fuzzing/packet/corpus/0ace70936b8b67cfeeed133ff8f281b00d502e1b-1
new file mode 100644
index 0000000000000000000000000000000000000000..fca5e54c0c0b31138223cac205cc5d2eec19dab6
Binary files /dev/null and b/fuzzing/packet/corpus/0ace70936b8b67cfeeed133ff8f281b00d502e1b-1 differ
diff --git a/fuzzing/packet/corpus/0ba3ebb1b2a1029e09c1cb83bc1b09762f231cd8-1 b/fuzzing/packet/corpus/0ba3ebb1b2a1029e09c1cb83bc1b09762f231cd8-1
new file mode 100644
index 0000000000000000000000000000000000000000..4ebdac5e15dc9c6190df6e8730e626b6d389fecf
Binary files /dev/null and b/fuzzing/packet/corpus/0ba3ebb1b2a1029e09c1cb83bc1b09762f231cd8-1 differ
diff --git a/fuzzing/packet/corpus/0df74acbb6cdec38f5849c0e49f4cacdf1dac629-5 b/fuzzing/packet/corpus/0df74acbb6cdec38f5849c0e49f4cacdf1dac629-5
new file mode 100644
index 0000000000000000000000000000000000000000..1e1eda6a2120468d20537d993740fb29b567237e
Binary files /dev/null and b/fuzzing/packet/corpus/0df74acbb6cdec38f5849c0e49f4cacdf1dac629-5 differ
diff --git a/fuzzing/packet/corpus/1.bytes b/fuzzing/packet/corpus/1.bytes
new file mode 100644
index 0000000000000000000000000000000000000000..04273bea1f62cdd2a9296e73e70d9b6623b5172c
Binary files /dev/null and b/fuzzing/packet/corpus/1.bytes differ
diff --git a/fuzzing/packet/corpus/17e6634985d31dbeaf2043b77a1e69ba45a02fa3-9 b/fuzzing/packet/corpus/17e6634985d31dbeaf2043b77a1e69ba45a02fa3-9
new file mode 100644
index 0000000000000000000000000000000000000000..2a5dacba3c5838bc8c24e218a6ba509a546dc580
Binary files /dev/null and b/fuzzing/packet/corpus/17e6634985d31dbeaf2043b77a1e69ba45a02fa3-9 differ
diff --git a/fuzzing/packet/corpus/2.bytes b/fuzzing/packet/corpus/2.bytes
new file mode 100644
index 0000000000000000000000000000000000000000..1e1a88bf442e0b13f058e7acf0460c1b703b9073
Binary files /dev/null and b/fuzzing/packet/corpus/2.bytes differ
diff --git a/fuzzing/packet/corpus/246d9b10f27ea92b3318a513ea1223c1dff40be3-7 b/fuzzing/packet/corpus/246d9b10f27ea92b3318a513ea1223c1dff40be3-7
new file mode 100644
index 0000000000000000000000000000000000000000..3fdac995b8aad35e3e2d027813fbadec3ee9c6f7
Binary files /dev/null and b/fuzzing/packet/corpus/246d9b10f27ea92b3318a513ea1223c1dff40be3-7 differ
diff --git a/fuzzing/packet/corpus/257d2fe4f97aa4541ded8b1a41d6a65ef53d06f1-11 b/fuzzing/packet/corpus/257d2fe4f97aa4541ded8b1a41d6a65ef53d06f1-11
new file mode 100644
index 0000000000000000000000000000000000000000..f678e21962289f0b8d8f786baeb1d647472f92c1
Binary files /dev/null and b/fuzzing/packet/corpus/257d2fe4f97aa4541ded8b1a41d6a65ef53d06f1-11 differ
diff --git a/fuzzing/packet/corpus/25e08ee00ac1320e41d90fa58d3149b3733448a6-8 b/fuzzing/packet/corpus/25e08ee00ac1320e41d90fa58d3149b3733448a6-8
new file mode 100644
index 0000000000000000000000000000000000000000..fa25df350a0a887488fcabd5fa90a5109e03e16a
Binary files /dev/null and b/fuzzing/packet/corpus/25e08ee00ac1320e41d90fa58d3149b3733448a6-8 differ
diff --git a/fuzzing/packet/corpus/3.bytes b/fuzzing/packet/corpus/3.bytes
new file mode 100644
index 0000000000000000000000000000000000000000..0bb83b59d69896621882b77884c4ab519e407ee5
Binary files /dev/null and b/fuzzing/packet/corpus/3.bytes differ
diff --git a/fuzzing/packet/corpus/3a199e742da9c4c4898f7a80306b1f68f7ab66c6-3 b/fuzzing/packet/corpus/3a199e742da9c4c4898f7a80306b1f68f7ab66c6-3
new file mode 100644
index 0000000000000000000000000000000000000000..bdeac6422ad6918320549b196d904d3e524557e0
Binary files /dev/null and b/fuzzing/packet/corpus/3a199e742da9c4c4898f7a80306b1f68f7ab66c6-3 differ
diff --git a/fuzzing/packet/corpus/3b1d7d76919291b6744b54fd2158f5df5c61ed2d-1 b/fuzzing/packet/corpus/3b1d7d76919291b6744b54fd2158f5df5c61ed2d-1
new file mode 100644
index 0000000000000000000000000000000000000000..886f01d35d0c580a4e4ed0bdc5ed8dabedb2811c
Binary files /dev/null and b/fuzzing/packet/corpus/3b1d7d76919291b6744b54fd2158f5df5c61ed2d-1 differ
diff --git a/fuzzing/packet/corpus/3e079343af2c1e793bbd2c8fcd672ec56dc6c25c-4 b/fuzzing/packet/corpus/3e079343af2c1e793bbd2c8fcd672ec56dc6c25c-4
new file mode 100644
index 0000000000000000000000000000000000000000..346bb1b3db8c5d09d21891a2d0e38d1af60cabc2
Binary files /dev/null and b/fuzzing/packet/corpus/3e079343af2c1e793bbd2c8fcd672ec56dc6c25c-4 differ
diff --git a/fuzzing/packet/corpus/4.bytes b/fuzzing/packet/corpus/4.bytes
new file mode 100644
index 0000000000000000000000000000000000000000..10fc460ddcfa541f70d4d1ea6bbdf76369b98205
Binary files /dev/null and b/fuzzing/packet/corpus/4.bytes differ
diff --git a/fuzzing/packet/corpus/4466603d1b8c2cbd09564a017acf94ab067a978a-5 b/fuzzing/packet/corpus/4466603d1b8c2cbd09564a017acf94ab067a978a-5
new file mode 100644
index 0000000000000000000000000000000000000000..32b10d9c709e0bebc9d8f782e58e84d16212a1bb
Binary files /dev/null and b/fuzzing/packet/corpus/4466603d1b8c2cbd09564a017acf94ab067a978a-5 differ
diff --git a/fuzzing/packet/corpus/48befb084cbe2e3036885a4e93fa62530717e2c4-2 b/fuzzing/packet/corpus/48befb084cbe2e3036885a4e93fa62530717e2c4-2
new file mode 100644
index 0000000000000000000000000000000000000000..4302f83d6d18a86ddd8abb6fa301f48731c60ffb
Binary files /dev/null and b/fuzzing/packet/corpus/48befb084cbe2e3036885a4e93fa62530717e2c4-2 differ
diff --git a/fuzzing/packet/corpus/5.bytes b/fuzzing/packet/corpus/5.bytes
new file mode 100644
index 0000000000000000000000000000000000000000..2c7f282c3e1ff5041b60af15b15876e339cb6d2f
Binary files /dev/null and b/fuzzing/packet/corpus/5.bytes differ
diff --git a/fuzzing/packet/corpus/58417300797958a8d956a72f0d461c46bebf266e-3 b/fuzzing/packet/corpus/58417300797958a8d956a72f0d461c46bebf266e-3
new file mode 100644
index 0000000000000000000000000000000000000000..d14799d5d94c1f78b1a38e7a0fb4ff0fa10e2937
Binary files /dev/null and b/fuzzing/packet/corpus/58417300797958a8d956a72f0d461c46bebf266e-3 differ
diff --git a/fuzzing/packet/corpus/5fd3ce661a420848e4aaedfd43ace8bd2898ff24-7 b/fuzzing/packet/corpus/5fd3ce661a420848e4aaedfd43ace8bd2898ff24-7
new file mode 100644
index 0000000000000000000000000000000000000000..e2a95b9ba53a202301da06c811046ed46fbe1dfd
Binary files /dev/null and b/fuzzing/packet/corpus/5fd3ce661a420848e4aaedfd43ace8bd2898ff24-7 differ
diff --git a/fuzzing/packet/corpus/6.bytes b/fuzzing/packet/corpus/6.bytes
new file mode 100644
index 0000000000000000000000000000000000000000..47a09db59b6e2e494c99f0aee1d98566507bde2d
Binary files /dev/null and b/fuzzing/packet/corpus/6.bytes differ
diff --git a/fuzzing/packet/corpus/62371dc5941146bd5d11d3a664a6242e36bcc01f-1 b/fuzzing/packet/corpus/62371dc5941146bd5d11d3a664a6242e36bcc01f-1
new file mode 100644
index 0000000000000000000000000000000000000000..1edd95f27beef0eab0a661f2caa2ee31a720f746
--- /dev/null
+++ b/fuzzing/packet/corpus/62371dc5941146bd5d11d3a664a6242e36bcc01f-1
@@ -0,0 +1 @@
+����������������
\ No newline at end of file
diff --git a/fuzzing/packet/corpus/63e58e734f4d8ab5d25f4fb42a0a97fbb981e49a-10 b/fuzzing/packet/corpus/63e58e734f4d8ab5d25f4fb42a0a97fbb981e49a-10
new file mode 100644
index 0000000000000000000000000000000000000000..823a32b86a4c7f33f16fed2a30f9055933cbe552
Binary files /dev/null and b/fuzzing/packet/corpus/63e58e734f4d8ab5d25f4fb42a0a97fbb981e49a-10 differ
diff --git a/fuzzing/packet/corpus/6698ba73735503c91bd06725a28dd97520492943-6 b/fuzzing/packet/corpus/6698ba73735503c91bd06725a28dd97520492943-6
new file mode 100644
index 0000000000000000000000000000000000000000..9c8f6e57161994df837b8bbcd98113dbcfdd531f
Binary files /dev/null and b/fuzzing/packet/corpus/6698ba73735503c91bd06725a28dd97520492943-6 differ
diff --git a/fuzzing/packet/corpus/6d51a3c633b809e379ccf02b1d89e651ed886248-2 b/fuzzing/packet/corpus/6d51a3c633b809e379ccf02b1d89e651ed886248-2
new file mode 100644
index 0000000000000000000000000000000000000000..9330e79e146399577b359e7132ecc2449948e42e
Binary files /dev/null and b/fuzzing/packet/corpus/6d51a3c633b809e379ccf02b1d89e651ed886248-2 differ
diff --git a/fuzzing/packet/corpus/6f9ac81c48e9f8adb7162137978afe333b73d5be-3 b/fuzzing/packet/corpus/6f9ac81c48e9f8adb7162137978afe333b73d5be-3
new file mode 100644
index 0000000000000000000000000000000000000000..6fdb34b7aa71ec77f33ba2691a575b81964c3ff5
Binary files /dev/null and b/fuzzing/packet/corpus/6f9ac81c48e9f8adb7162137978afe333b73d5be-3 differ
diff --git a/fuzzing/packet/corpus/83e5382679a52a38b6ee66e19234850c6445276b-9 b/fuzzing/packet/corpus/83e5382679a52a38b6ee66e19234850c6445276b-9
new file mode 100644
index 0000000000000000000000000000000000000000..d0e0d2fc3c388b86b978dee344b41b24e071d569
Binary files /dev/null and b/fuzzing/packet/corpus/83e5382679a52a38b6ee66e19234850c6445276b-9 differ
diff --git a/fuzzing/packet/corpus/85e53271e14006f0265921d02d4d736cdc580b0b-1 b/fuzzing/packet/corpus/85e53271e14006f0265921d02d4d736cdc580b0b-1
new file mode 100644
index 0000000000000000000000000000000000000000..ce542efaa5124a0437f0c4db329d7ec4b7ba70a7
--- /dev/null
+++ b/fuzzing/packet/corpus/85e53271e14006f0265921d02d4d736cdc580b0b-1
@@ -0,0 +1 @@
+�
\ No newline at end of file
diff --git a/fuzzing/packet/corpus/a1a7f1b3b949cdd10400b4f6a06287b263a36477-4 b/fuzzing/packet/corpus/a1a7f1b3b949cdd10400b4f6a06287b263a36477-4
new file mode 100644
index 0000000000000000000000000000000000000000..c63b223b6abc0b81cf213f7f28516e84de3b7209
Binary files /dev/null and b/fuzzing/packet/corpus/a1a7f1b3b949cdd10400b4f6a06287b263a36477-4 differ
diff --git a/fuzzing/packet/corpus/a3d0c7741496b9936f0f467f7651f03578fb761e-6 b/fuzzing/packet/corpus/a3d0c7741496b9936f0f467f7651f03578fb761e-6
new file mode 100644
index 0000000000000000000000000000000000000000..3c3ea8f7921fda46cc2120fd5e43a86421da6fdb
Binary files /dev/null and b/fuzzing/packet/corpus/a3d0c7741496b9936f0f467f7651f03578fb761e-6 differ
diff --git a/fuzzing/packet/corpus/a8e7928916f90886b3d773931170eb8f562d72fe-5 b/fuzzing/packet/corpus/a8e7928916f90886b3d773931170eb8f562d72fe-5
new file mode 100644
index 0000000000000000000000000000000000000000..f3d634a6e0fcbad8ce496a353e6947f48b67b85f
Binary files /dev/null and b/fuzzing/packet/corpus/a8e7928916f90886b3d773931170eb8f562d72fe-5 differ
diff --git a/fuzzing/packet/corpus/ad17b9fa9045080d6e1aa6c5c7580a10eed4ecb8-3 b/fuzzing/packet/corpus/ad17b9fa9045080d6e1aa6c5c7580a10eed4ecb8-3
new file mode 100644
index 0000000000000000000000000000000000000000..f412b003b5743bd2c3d881ba903805c62f93b902
Binary files /dev/null and b/fuzzing/packet/corpus/ad17b9fa9045080d6e1aa6c5c7580a10eed4ecb8-3 differ
diff --git a/fuzzing/packet/corpus/afa974e4717ef61591231fb3cac26787aa908258 b/fuzzing/packet/corpus/afa974e4717ef61591231fb3cac26787aa908258
new file mode 100644
index 0000000000000000000000000000000000000000..22685bbfc411a8f24521b95cb7b212b9fc80fdd0
--- /dev/null
+++ b/fuzzing/packet/corpus/afa974e4717ef61591231fb3cac26787aa908258
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/fuzzing/packet/corpus/b334ba4f2e51dd6bfdf68994e9e572ef59fb31d4-2 b/fuzzing/packet/corpus/b334ba4f2e51dd6bfdf68994e9e572ef59fb31d4-2
new file mode 100644
index 0000000000000000000000000000000000000000..53bb04d5f81ec9b64e56928692c9e913ee61febf
Binary files /dev/null and b/fuzzing/packet/corpus/b334ba4f2e51dd6bfdf68994e9e572ef59fb31d4-2 differ
diff --git a/fuzzing/packet/corpus/b6dc94ef39eb455c359b60e2813ae55665c6c085-1 b/fuzzing/packet/corpus/b6dc94ef39eb455c359b60e2813ae55665c6c085-1
new file mode 100644
index 0000000000000000000000000000000000000000..1f3855616eb73206f1461e5b155add4be7320f93
Binary files /dev/null and b/fuzzing/packet/corpus/b6dc94ef39eb455c359b60e2813ae55665c6c085-1 differ
diff --git a/fuzzing/packet/corpus/b7bdc0d8438edee7257cbdf70c36cb7d1f7035fa-10 b/fuzzing/packet/corpus/b7bdc0d8438edee7257cbdf70c36cb7d1f7035fa-10
new file mode 100644
index 0000000000000000000000000000000000000000..5f0af85d8332a28978c53ef26ceb11dcfdaf6556
Binary files /dev/null and b/fuzzing/packet/corpus/b7bdc0d8438edee7257cbdf70c36cb7d1f7035fa-10 differ
diff --git a/fuzzing/packet/corpus/b851290ca41de3bd9cacf5dd88650582409f9527-2 b/fuzzing/packet/corpus/b851290ca41de3bd9cacf5dd88650582409f9527-2
new file mode 100644
index 0000000000000000000000000000000000000000..b22466e4b93c989e41cb4e2cccf9dc38cd43c641
Binary files /dev/null and b/fuzzing/packet/corpus/b851290ca41de3bd9cacf5dd88650582409f9527-2 differ
diff --git a/fuzzing/packet/corpus/b9266e7167c429092cb26b3dff879f40891c3b7d-2 b/fuzzing/packet/corpus/b9266e7167c429092cb26b3dff879f40891c3b7d-2
new file mode 100644
index 0000000000000000000000000000000000000000..391ca0052bf8c728fb4b8c336f4a5da65426223c
Binary files /dev/null and b/fuzzing/packet/corpus/b9266e7167c429092cb26b3dff879f40891c3b7d-2 differ
diff --git a/fuzzing/packet/corpus/bc6400ae15329575a729943ccc9d0087c5ddfa75-1 b/fuzzing/packet/corpus/bc6400ae15329575a729943ccc9d0087c5ddfa75-1
new file mode 100644
index 0000000000000000000000000000000000000000..22b00376b7bce3e66d18782ab69121547269d01c
Binary files /dev/null and b/fuzzing/packet/corpus/bc6400ae15329575a729943ccc9d0087c5ddfa75-1 differ
diff --git a/fuzzing/packet/corpus/be687b1f2a8136b143e55a736b9b78cc3ea7c3ba-4 b/fuzzing/packet/corpus/be687b1f2a8136b143e55a736b9b78cc3ea7c3ba-4
new file mode 100644
index 0000000000000000000000000000000000000000..4aee6a1587c2b976c703a0971134f5035724ff0c
Binary files /dev/null and b/fuzzing/packet/corpus/be687b1f2a8136b143e55a736b9b78cc3ea7c3ba-4 differ
diff --git a/fuzzing/packet/corpus/c18bebbf42f8553ed0ba3a214155e9b8e7f88e10-1 b/fuzzing/packet/corpus/c18bebbf42f8553ed0ba3a214155e9b8e7f88e10-1
new file mode 100644
index 0000000000000000000000000000000000000000..2877cb62182ad6ce38e8b5b849c7b2341440915c
Binary files /dev/null and b/fuzzing/packet/corpus/c18bebbf42f8553ed0ba3a214155e9b8e7f88e10-1 differ
diff --git a/fuzzing/packet/corpus/caf0fa4d68cf307435b48a4b673807f7e5eab117-1 b/fuzzing/packet/corpus/caf0fa4d68cf307435b48a4b673807f7e5eab117-1
new file mode 100644
index 0000000000000000000000000000000000000000..d4c0159f724d0c2ea9725f50aafc15734665f517
Binary files /dev/null and b/fuzzing/packet/corpus/caf0fa4d68cf307435b48a4b673807f7e5eab117-1 differ
diff --git a/fuzzing/packet/corpus/ce6cfb94676fdceb717db4b1513bdaf00e8b5b95 b/fuzzing/packet/corpus/ce6cfb94676fdceb717db4b1513bdaf00e8b5b95
new file mode 100644
index 0000000000000000000000000000000000000000..452f3353cce296d859cb4a771c63f964d10e451d
Binary files /dev/null and b/fuzzing/packet/corpus/ce6cfb94676fdceb717db4b1513bdaf00e8b5b95 differ
diff --git a/fuzzing/packet/corpus/ce8172f26f9352332a6dd74d2bbf557182fbb77c-1 b/fuzzing/packet/corpus/ce8172f26f9352332a6dd74d2bbf557182fbb77c-1
new file mode 100644
index 0000000000000000000000000000000000000000..198f6a3ac64a668b3803faaa92f1a387b7393787
Binary files /dev/null and b/fuzzing/packet/corpus/ce8172f26f9352332a6dd74d2bbf557182fbb77c-1 differ
diff --git a/fuzzing/packet/corpus/cf35187f48183cd066ab36204b2bed41a1636e8f-8 b/fuzzing/packet/corpus/cf35187f48183cd066ab36204b2bed41a1636e8f-8
new file mode 100644
index 0000000000000000000000000000000000000000..0f9f67d9e93dad4486354c0d8bfdadf76e33925b
Binary files /dev/null and b/fuzzing/packet/corpus/cf35187f48183cd066ab36204b2bed41a1636e8f-8 differ
diff --git a/fuzzing/packet/corpus/d25c953c2dfc83461f6308c7b153dfc582ad65f8-3 b/fuzzing/packet/corpus/d25c953c2dfc83461f6308c7b153dfc582ad65f8-3
new file mode 100644
index 0000000000000000000000000000000000000000..7e9df35c1cd8ff889a34b9ba5be3a13f79d22f31
Binary files /dev/null and b/fuzzing/packet/corpus/d25c953c2dfc83461f6308c7b153dfc582ad65f8-3 differ
diff --git a/fuzzing/packet/corpus/d834b8ed259157d28b3d8340b1000fc5332165cd-2 b/fuzzing/packet/corpus/d834b8ed259157d28b3d8340b1000fc5332165cd-2
new file mode 100644
index 0000000000000000000000000000000000000000..2b38f32e0c77532d08cee62fcd0e5f7fb16620c2
Binary files /dev/null and b/fuzzing/packet/corpus/d834b8ed259157d28b3d8340b1000fc5332165cd-2 differ
diff --git a/fuzzing/packet/corpus/d947e66423d44f11981817d9a4ed5f36edc1d73b-1 b/fuzzing/packet/corpus/d947e66423d44f11981817d9a4ed5f36edc1d73b-1
new file mode 100644
index 0000000000000000000000000000000000000000..dc069282d48156996b283a49aea3be81ebb2ef87
Binary files /dev/null and b/fuzzing/packet/corpus/d947e66423d44f11981817d9a4ed5f36edc1d73b-1 differ
diff --git a/fuzzing/packet/corpus/dc619c747104de130ec7e3424f9834e77e804c45-7 b/fuzzing/packet/corpus/dc619c747104de130ec7e3424f9834e77e804c45-7
new file mode 100644
index 0000000000000000000000000000000000000000..e6492c7022a473f45bb0a9830f4651e1f4a5b5f8
Binary files /dev/null and b/fuzzing/packet/corpus/dc619c747104de130ec7e3424f9834e77e804c45-7 differ
diff --git a/fuzzing/packet/corpus/e6126c61f9505667f0a7cb2b90fb60c31dfded40-12 b/fuzzing/packet/corpus/e6126c61f9505667f0a7cb2b90fb60c31dfded40-12
new file mode 100644
index 0000000000000000000000000000000000000000..6b7b4d0daa83d60d257c357e510229a6a905dc89
Binary files /dev/null and b/fuzzing/packet/corpus/e6126c61f9505667f0a7cb2b90fb60c31dfded40-12 differ
diff --git a/fuzzing/packet/corpus/e70ffd323bf2dde3ff5ca80b4e6395724467b98d-4 b/fuzzing/packet/corpus/e70ffd323bf2dde3ff5ca80b4e6395724467b98d-4
new file mode 100644
index 0000000000000000000000000000000000000000..b7f8489eca2e83a61625423e289e9de86979bea5
Binary files /dev/null and b/fuzzing/packet/corpus/e70ffd323bf2dde3ff5ca80b4e6395724467b98d-4 differ
diff --git a/fuzzing/packet/corpus/e7952b4c14d15d88eaf665083a22778642302998-3 b/fuzzing/packet/corpus/e7952b4c14d15d88eaf665083a22778642302998-3
new file mode 100644
index 0000000000000000000000000000000000000000..5292b1fd24d40ebc5f1dff6473d539e47a6cd064
Binary files /dev/null and b/fuzzing/packet/corpus/e7952b4c14d15d88eaf665083a22778642302998-3 differ
diff --git a/fuzzing/packet/corpus/fa4f6be24ac4351604432e26ce02b1c38b213abb-6 b/fuzzing/packet/corpus/fa4f6be24ac4351604432e26ce02b1c38b213abb-6
new file mode 100644
index 0000000000000000000000000000000000000000..cebbd01da53b2bdd3ec5c9f0e265ef83c5771537
Binary files /dev/null and b/fuzzing/packet/corpus/fa4f6be24ac4351604432e26ce02b1c38b213abb-6 differ
diff --git a/fuzzing/packet/corpus/fd371aa158566c6ff56ed1ad10898d075ea37216-4 b/fuzzing/packet/corpus/fd371aa158566c6ff56ed1ad10898d075ea37216-4
new file mode 100644
index 0000000000000000000000000000000000000000..d0e8c3419a3c7ceb124d1eb064549a6a8324274e
Binary files /dev/null and b/fuzzing/packet/corpus/fd371aa158566c6ff56ed1ad10898d075ea37216-4 differ
diff --git a/fuzzing/packet/gen_initial_corpus.go b/fuzzing/packet/gen_initial_corpus.go
new file mode 100644
index 0000000000000000000000000000000000000000..8ee0de11c6b76ddcdd0bf38df1added88cc19b74
--- /dev/null
+++ b/fuzzing/packet/gen_initial_corpus.go
@@ -0,0 +1,107 @@
+package main
+
+import (
+	"fmt"
+	"log"
+	"os"
+)
+
+func main() {
+	tests := []struct {
+		testNum  int
+		input    []byte
+		wantFail bool
+		expected interface{}
+	}{
+		{
+			// Proper packet
+			testNum: 1,
+			input: []byte{
+				255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, // Marker
+				0, 19, // Length
+				4, // Type = Keepalive
+
+			},
+			wantFail: false,
+		},
+		{
+			// Invalid marker
+			testNum: 2,
+			input: []byte{
+				1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, // Marker
+				0, 19, // Length
+				4, // Type = Keepalive
+
+			},
+			wantFail: true,
+		},
+		{
+			// Proper NOTIFICATION packet
+			testNum: 3,
+			input: []byte{
+				255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, // Marker
+				0, 21, // Length
+				3,    // Type = Notification
+				1, 1, // Message Header Error, Connection Not Synchronized.
+			},
+			wantFail: false,
+		},
+		{
+			// Proper OPEN packet
+			testNum: 4,
+			input: []byte{
+				255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, // Marker
+				0, 29, // Length
+				1,      // Type = Open
+				4,      // Version
+				0, 200, //ASN,
+				0, 15, // Holdtime
+				10, 20, 30, 40, // BGP Identifier
+				0, // Opt Parm Len
+			},
+			wantFail: false,
+		},
+		{
+			// Incomplete OPEN packet
+			testNum: 5,
+			input: []byte{
+				255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, // Marker
+				0, 28, // Length
+				1,      // Type = Open
+				4,      // Version
+				0, 200, //ASN,
+				0, 15, // Holdtime
+				0, 0, 0, 100, // BGP Identifier
+			},
+			wantFail: true,
+		},
+		{
+			testNum: 6,
+			input: []byte{
+				255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, // Marker
+				0, 28, // Length
+				2,                               // Type = Update
+				0, 5, 8, 10, 16, 192, 168, 0, 0, // 2 withdraws
+			},
+			wantFail: false,
+		},
+		{
+			testNum: 7,
+			input: []byte{
+				255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, // Marker
+				0, 28, // Length
+				5,                               // Type = Invalid
+				0, 5, 8, 10, 16, 192, 168, 0, 0, // Some more stuff
+			},
+			wantFail: true,
+		},
+	}
+	for i, t := range tests {
+		f, err := os.Create(fmt.Sprintf("corpus/%v.bytes", i))
+		if err != nil {
+			log.Fatalf(err.Error())
+		}
+		f.Write(t.input)
+		f.Close()
+	}
+}
diff --git a/protocols/bgp/packet/fuzzing.go b/protocols/bgp/packet/fuzzing.go
new file mode 100644
index 0000000000000000000000000000000000000000..7428662df2971a36dcc9046f6ab0d50b210eb504
--- /dev/null
+++ b/protocols/bgp/packet/fuzzing.go
@@ -0,0 +1,25 @@
+// +build gofuzz
+
+package packet
+
+import "bytes"
+
+const (
+	INC_PRIO = 1
+	KEEP     = 0
+	DISMISS  = -1
+)
+
+func Fuzz(data []byte) int {
+
+	buf := bytes.NewBuffer(data)
+	msg, err := Decode(buf)
+	if err != nil {
+		if msg != nil {
+			panic("msg != nil on error")
+		}
+		return KEEP
+	}
+
+	return INC_PRIO
+}