Compare commits
	
		
			7 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 550574fa0f | |||
| bed54826d6 | |||
| b318bcb3c1 | |||
| 390fabe1b4 | |||
| 92f5c579e6 | |||
| 305ba29c50 | |||
| f8be95c8d0 | 
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -4,3 +4,5 @@ hypd/hypd | |||||||
| hyp/hyp | hyp/hyp | ||||||
| hypd/hypdconfig.json | hypd/hypdconfig.json | ||||||
| hypd/secrets/ | hypd/secrets/ | ||||||
|  | hypd/server/*.o | ||||||
|  | env.sh | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| # hyp | Hide Your Ports | # hyp | Hide Your Ports | ||||||
|  |  | ||||||
| [](https://drone.deadbeef.codes/steven/hyp) | [](https://drone.deadbeef.codes/steven/hyp) | ||||||
|  |  | ||||||
| hyp is a [port knocking](https://www.youtube.com/watch?v=a7VJZEJVhD0) implementation written in Go and C.  hyp uses spread-spectrum UDP as an authentication mechanism and enables trusted agents to access services over the internet, wherever they are, and without the service being accessible by others. Your TCP and UDP ports are closed. They will not show in a port scan.  Nobody else can connect to them.  This is particularly useful as [there](https://nvd.nist.gov/vuln/detail/CVE-2024-21888) [have](https://nvd.nist.gov/vuln/detail/CVE-2023-20269) [been](https://nvd.nist.gov/vuln/detail/CVE-2021-26109) [a](https://nvd.nist.gov/vuln/detail/CVE-2024-22394) [few](https://nvd.nist.gov/vuln/detail/CVE-2024-21894) [VPN](https://nvd.nist.gov/vuln/detail/CVE-2024-3400) [gateway](https://nvd.nist.gov/vuln/detail/CVE-2023-27997) [vulnerabilities](https://nvd.nist.gov/vuln/detail/CVE-2024-21762) [over](https://nvd.nist.gov/vuln/detail/CVE-2022-3236) [the](https://nvd.nist.gov/vuln/detail/CVE-2024-21893) [years](https://nvd.nist.gov/vuln/detail/CVE-2022-42475).  I often wonder what's out there and hasn't been discovered.  Why take the chance of leaving your VPN open to the whole internet?  With hyp, you don't have to.   | hyp is a [port knocking](https://www.youtube.com/watch?v=a7VJZEJVhD0) implementation written in Go and C.  hyp uses spread-spectrum UDP as an authentication mechanism and enables trusted agents to access services over the internet, wherever they are, and without the service being accessible by others. Your TCP and UDP ports are closed. They will not show in a port scan.  Nobody else can connect to them.  This is particularly useful as [there](https://nvd.nist.gov/vuln/detail/CVE-2024-21888) [have](https://nvd.nist.gov/vuln/detail/CVE-2023-20269) [been](https://nvd.nist.gov/vuln/detail/CVE-2021-26109) [a](https://nvd.nist.gov/vuln/detail/CVE-2024-22394) [few](https://nvd.nist.gov/vuln/detail/CVE-2024-21894) [VPN](https://nvd.nist.gov/vuln/detail/CVE-2024-3400) [gateway](https://nvd.nist.gov/vuln/detail/CVE-2023-27997) [vulnerabilities](https://nvd.nist.gov/vuln/detail/CVE-2024-21762) [over](https://nvd.nist.gov/vuln/detail/CVE-2022-3236) [the](https://nvd.nist.gov/vuln/detail/CVE-2024-21893) [years](https://nvd.nist.gov/vuln/detail/CVE-2022-42475).  I often wonder what's out there and hasn't been discovered.  Why take the chance of leaving your VPN open to the whole internet?  With hyp, you don't have to.   | ||||||
|  |  | ||||||
| @@ -14,7 +14,7 @@ Compared to most port knocking daemons, hyp is extremely fast, lightweight and h | |||||||
| 6. The knock daemon on the firewall verifies the sequence and performs the action of opening the firewall port configured for the client to let them in while remaining closed to everyone else.  | 6. The knock daemon on the firewall verifies the sequence and performs the action of opening the firewall port configured for the client to let them in while remaining closed to everyone else.  | ||||||
| 7. The client connects to their application which has its own authentication, authorization, and auditing.  | 7. The client connects to their application which has its own authentication, authorization, and auditing.  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ### Runtime Requirements | ### Runtime Requirements | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										12
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								go.mod
									
									
									
									
									
								
							| @@ -1,15 +1,15 @@ | |||||||
| module deadbeef.codes/steven/hyp | module deadbeef.codes/steven/hyp | ||||||
|  |  | ||||||
| go 1.22.0 | go 1.24.0 | ||||||
|  |  | ||||||
| require ( | require ( | ||||||
| 	github.com/cilium/ebpf v0.14.0 | 	github.com/cilium/ebpf v0.19.0 | ||||||
| 	github.com/spf13/cobra v1.8.0 | 	github.com/spf13/cobra v1.10.1 | ||||||
| ) | ) | ||||||
|  |  | ||||||
| require ( | require ( | ||||||
| 	github.com/inconshreveable/mousetrap v1.1.0 // indirect | 	github.com/inconshreveable/mousetrap v1.1.0 // indirect | ||||||
| 	github.com/spf13/pflag v1.0.5 // indirect | 	github.com/spf13/pflag v1.0.10 // indirect | ||||||
| 	golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f // indirect | 	golang.org/x/sync v0.16.0 // indirect | ||||||
| 	golang.org/x/sys v0.19.0 // indirect | 	golang.org/x/sys v0.36.0 // indirect | ||||||
| ) | ) | ||||||
|   | |||||||
							
								
								
									
										45
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										45
									
								
								go.sum
									
									
									
									
									
								
							| @@ -1,26 +1,37 @@ | |||||||
| github.com/cilium/ebpf v0.14.0 h1:0PsxAjO6EjI1rcT+rkp6WcCnE0ZvfkXBYiMedJtrSUs= | github.com/cilium/ebpf v0.19.0 h1:Ro/rE64RmFBeA9FGjcTc+KmCeY6jXmryu6FfnzPRIao= | ||||||
| github.com/cilium/ebpf v0.14.0/go.mod h1:DHp1WyrLeiBh19Cf/tfiSMhqheEiK8fXFZ4No0P1Hso= | github.com/cilium/ebpf v0.19.0/go.mod h1:fLCgMo3l8tZmAdM3B2XqdFzXBpwkcSTroaVqN08OWVY= | ||||||
| github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= | github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= | ||||||
| github.com/go-quicktest/qt v1.101.0 h1:O1K29Txy5P2OK0dGo59b7b0LR6wKfIhttaAhHUyn7eI= | github.com/go-quicktest/qt v1.101.1-0.20240301121107-c6c8733fa1e6 h1:teYtXy9B7y5lHTp8V9KPxpYRAVA7dozigQcMiBust1s= | ||||||
| github.com/go-quicktest/qt v1.101.0/go.mod h1:14Bz/f7NwaXPtdYEgzsx46kqSxVwTbzVZsDC26tQJow= | github.com/go-quicktest/qt v1.101.1-0.20240301121107-c6c8733fa1e6/go.mod h1:p4lGIVX+8Wa6ZPNDvqcxq36XpUDLh42FLetFU7odllI= | ||||||
| github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= | github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= | ||||||
| github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||||
| github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= | github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= | ||||||
| github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= | github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= | ||||||
|  | github.com/josharian/native v1.1.0 h1:uuaP0hAbW7Y4l0ZRQ6C9zfb7Mg1mbFKry/xzDAfmtLA= | ||||||
|  | github.com/josharian/native v1.1.0/go.mod h1:7X/raswPFr05uY3HiLlYeyQntB6OO7E/d2Cu7qoaN2w= | ||||||
|  | github.com/jsimonetti/rtnetlink/v2 v2.0.1 h1:xda7qaHDSVOsADNouv7ukSuicKZO7GgVUCXxpaIEIlM= | ||||||
|  | github.com/jsimonetti/rtnetlink/v2 v2.0.1/go.mod h1:7MoNYNbb3UaDHtF8udiJo/RH6VsTKP1pqKLUTVCvToE= | ||||||
| github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= | github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= | ||||||
| github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= | github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= | ||||||
| github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= | github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= | ||||||
| github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= | github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= | ||||||
| github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= | github.com/mdlayher/netlink v1.7.2 h1:/UtM3ofJap7Vl4QWCPDGXY8d3GIY2UGSDbK+QWmY8/g= | ||||||
| github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= | github.com/mdlayher/netlink v1.7.2/go.mod h1:xraEF7uJbxLhc5fpHL4cPe221LI2bdttWlU+ZGLfQSw= | ||||||
|  | github.com/mdlayher/socket v0.4.1 h1:eM9y2/jlbs1M615oshPQOHZzj6R6wMT7bX5NPiQvn2U= | ||||||
|  | github.com/mdlayher/socket v0.4.1/go.mod h1:cAqeGjoufqdxWkD7DkpyS+wcefOtmu5OQ8KuoJGIReA= | ||||||
|  | github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= | ||||||
|  | github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= | ||||||
| github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= | github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= | ||||||
| github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= | github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= | ||||||
| github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= | github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= | ||||||
| github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= | github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= | ||||||
| github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= | github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= | ||||||
| golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f h1:99ci1mjWVBWwJiEKYY6jWa4d2nTQVIEhZIptnrVb1XY= | github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= | ||||||
| golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f/go.mod h1:/lliqkxwWAhPjf5oSOIJup2XcqJaw8RGS6k3TGEc7GI= | golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= | ||||||
| golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= | golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= | ||||||
| golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= | golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= | ||||||
|  | golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= | ||||||
|  | golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= | ||||||
|  | golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= | ||||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||||
| gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | ||||||
|   | |||||||
							
								
								
									
										7
									
								
								hypd/examples/fortigate/hypdconfig.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								hypd/examples/fortigate/hypdconfig.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | { | ||||||
|  |     "networkInterface": "enp0s3", | ||||||
|  |     "preSharedKeyDirectory": "./secrets/", | ||||||
|  |     "successAction": "./examples/fortigate/openfortigate.sh %s", | ||||||
|  |     "timeoutSeconds": 0, | ||||||
|  |     "timeoutAction": "" | ||||||
|  | } | ||||||
							
								
								
									
										33
									
								
								hypd/examples/fortigate/openfortigate.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										33
									
								
								hypd/examples/fortigate/openfortigate.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,33 @@ | |||||||
|  | #!/bin/bash | ||||||
|  |  | ||||||
|  | # Make sure you have environment variables set for FORTIGATE_MGMT_URL, FORTIGATE_API_TOKEN and FORTIGATE_ADDRESS_OBJECT_GROUP | ||||||
|  | # Examples: | ||||||
|  | export FORTIGATE_MGMT_URL="https://69.4.20.10:8443"  | ||||||
|  | export FORTIGATE_API_KEY="5fkwkkzgQ4s31bdH60qsxxfN093zgt" | ||||||
|  | export FORTIGATE_ADDRESS_OBJECT_GROUP="hyp-allowed-clients" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | if [ $# -lt 1 ]; then | ||||||
|  |     echo "Usage: $0 <srcip>" | ||||||
|  |     exit 1 | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | echo $FORTIGATE_MGMT_URL | ||||||
|  | echo $1 | ||||||
|  |  | ||||||
|  | # Create the address object | ||||||
|  | curl "$FORTIGATE_MGMT_URL/api/v2/cmdb/firewall/address?datasource=1" \ | ||||||
|  |     -X "POST" \ | ||||||
|  |     -H "Authorization: Bearer $FORTIGATE_API_KEY" \ | ||||||
|  |     -H "Content-Type: application/json" \ | ||||||
|  |     --data-raw "{\"name\":\"hyp_$1\",\"subnet\":\"$1/32\",\"color\":\"0\"}" \ | ||||||
|  |     --insecure # LOL - remove this if you want, but I want this to be easy for noobs | ||||||
|  |  | ||||||
|  |  | ||||||
|  | # Add to address object group | ||||||
|  | curl "$FORTIGATE_MGMT_URL/api/v2/cmdb/firewall/addrgrp/$FORTIGATE_ADDRESS_OBJECT_GROUP/member" \ | ||||||
|  |     -X "POST" \ | ||||||
|  |     -H "Authorization: Bearer $FORTIGATE_API_KEY" \ | ||||||
|  |     -H "Content-Type: application/json" \ | ||||||
|  |     --data-raw "{\"name\":\"hyp_$1\"}" \ | ||||||
|  |     --insecure # And here too | ||||||
							
								
								
									
										12
									
								
								hypd/examples/openwrt-wireguard/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								hypd/examples/openwrt-wireguard/README.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | |||||||
|  | # Using hyp with OpenWrt Wireguard | ||||||
|  |  | ||||||
|  | This example case is to deploy hypd on OpenWrt to open up access to the WireGuard VPN service. | ||||||
|  |  | ||||||
|  | hyp utilizes eBPF technology to ensure runtime overhead is extremely small (in a way, but in a way not).  Most Linux distributions have support for this out of the box, however OpenWrt does not.  OpenWrt has a very stripped down, purpose-configured kernel and does not have the requirements built in to run hyp.   | ||||||
|  |  | ||||||
|  | The good news is, you can build OpenWrt yourself and configure it with the requirements.  Follow the directions at this page: https://openwrt.org/docs/guide-developer/toolchain/use-buildsystem | ||||||
|  |  | ||||||
|  | When you run *make menuconfig*, make sure you check off *Enable additional BTF type information* which is also known as CONFIG_KERNEL_DEBUG_INFO_BTF.  This is required to support eBPF CO:RE.  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
							
								
								
									
										
											BIN
										
									
								
								hypd/examples/openwrt-wireguard/kernel_config.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								hypd/examples/openwrt-wireguard/kernel_config.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 148 KiB | 
| @@ -35,20 +35,32 @@ int xdp_prog_func(struct xdp_md *ctx) { | |||||||
|  |  | ||||||
| 	// A knock should not contain any data | 	// A knock should not contain any data | ||||||
| 	if (data_end - data > 60) {  | 	if (data_end - data > 60) {  | ||||||
| 		goto done; | 		return XDP_PASS; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	// parse ethernet header | 	// parse ethernet header | ||||||
| 	struct ethhdr *eth = data; | 	struct ethhdr *eth = data; | ||||||
| 	if ((void *)eth + sizeof(*eth) <= data_end) { | 	if ((void *)eth + sizeof(*eth) > data_end) { | ||||||
|  | 		return XDP_PASS; | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	// parse IP header | 	// parse IP header | ||||||
| 	struct iphdr *ip = data + sizeof(*eth); | 	struct iphdr *ip = data + sizeof(*eth); | ||||||
| 		if ((void *)ip + sizeof(*ip) <= data_end) { | 	if ((void *)ip + sizeof(*ip) > data_end) { | ||||||
| 			if (ip->protocol == IPPROTO_UDP) { | 		return XDP_PASS; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	// Ensure IP header protocol field is UDP (protocol 17) | ||||||
|  | 	if (ip->protocol != IPPROTO_UDP) { | ||||||
|  | 		return XDP_PASS; | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	// parse UDP header | 	// parse UDP header | ||||||
| 	struct udphdr *udp = (void *)ip + sizeof(*ip); | 	struct udphdr *udp = (void *)ip + sizeof(*ip); | ||||||
| 				if ((void *)udp + sizeof(*udp) <= data_end) | 	if ((void *)udp + sizeof(*udp) > data_end) { | ||||||
| 				{ | 		return XDP_PASS; | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	// pack into knock structure and send to userspace | 	// pack into knock structure and send to userspace | ||||||
| 	struct knock_data knock = { | 	struct knock_data knock = { | ||||||
| 		.srcip = bpf_ntohl(ip->saddr), | 		.srcip = bpf_ntohl(ip->saddr), | ||||||
| @@ -56,11 +68,7 @@ int xdp_prog_func(struct xdp_md *ctx) { | |||||||
| 		.pad = 0 | 		.pad = 0 | ||||||
| 	};				 | 	};				 | ||||||
| 	bpf_ringbuf_output(&rb, &knock, sizeof(knock), BPF_RB_FORCE_WAKEUP); | 	bpf_ringbuf_output(&rb, &knock, sizeof(knock), BPF_RB_FORCE_WAKEUP); | ||||||
| 				} | 		 | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| done: |  | ||||||
| 	// We send everything to XDP_PASS | 	// We send everything to XDP_PASS | ||||||
| 	return XDP_PASS; | 	return XDP_PASS; | ||||||
| } | } | ||||||
|   | |||||||
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
		Reference in New Issue
	
	Block a user