1 /* $NetBSD: pfilter.c,v 1.9 2024/08/02 17:13:02 christos Exp $ */ 2 #include "namespace.h" 3 #include "includes.h" 4 #include "ssh.h" 5 #include "packet.h" 6 #include "log.h" 7 #include "pfilter.h" 8 #include <blocklist.h> 9 #include <syslog.h> 10 11 #ifndef SMALL 12 static struct blocklist *blstate; 13 #endif 14 15 #include "includes.h" 16 __RCSID("$NetBSD: pfilter.c,v 1.9 2024/08/02 17:13:02 christos Exp $"); 17 18 void 19 pfilter_init() 20 { 21 #ifndef SMALL 22 blstate = blocklist_open2(vsyslog_ss); 23 #endif 24 } 25 26 extern struct ssh *the_active_state; 27 28 void 29 pfilter_notify(int a) 30 { 31 #ifndef SMALL 32 int fd; 33 if (the_active_state == NULL) 34 return; 35 if (blstate == NULL) 36 pfilter_init(); 37 if (blstate == NULL) 38 return; 39 // XXX: 3? 40 fd = ssh_packet_connection_is_on_socket(the_active_state) ? 41 ssh_packet_get_connection_in(the_active_state) : 3; 42 (void)blocklist_r(blstate, a, fd, "ssh"); 43 if (a == 0) { 44 blocklist_close(blstate); 45 blstate = NULL; 46 } 47 #else 48 __USE(a); 49 #endif 50 } 51