Home | History | Annotate | Line # | Download | only in dist
      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