From e8ceccc3d5462ec35d134a5ada544e972a2f8fa9 Mon Sep 17 00:00:00 2001 From: vieira Date: Sat, 14 Jan 2017 19:23:02 +0000 Subject: [PATCH] Add support for PfSense PfSense is based on FreeBSD and its pf is pretty close to the one FreeBSD ships, however some structures have different fields and two offsets had to be fixed. --- sshuttle/methods/pf.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/sshuttle/methods/pf.py b/sshuttle/methods/pf.py index c77ea5d..5888b47 100644 --- a/sshuttle/methods/pf.py +++ b/sshuttle/methods/pf.py @@ -1,5 +1,6 @@ import os import sys +import platform import re import socket import struct @@ -335,10 +336,20 @@ class Darwin(FreeBsd): return xport.port +class PfSense(FreeBsd): + RULE_ACTION_OFFSET = 3040 + + def __init__(self): + self.pfioc_rule = c_char * 3112 + super(PfSense, self).__init__() + + if sys.platform == 'darwin': pf = Darwin() elif sys.platform.startswith('openbsd'): pf = OpenBsd() +elif platform.version().endswith('pfSense'): + pf = PfSense() else: pf = FreeBsd()