Skip site navigation (1)Skip section navigation (2)
Date:      Sat,  3 Jun 2000 13:47:28 -0700 (PDT)
From:      loughry@uswest.net
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   bin/18992: log packets blocked by filter rules
Message-ID:  <20000603204728.159CD37BC4E@hub.freebsd.org>

next in thread | raw e-mail | index | archive | help


>Number:         18992
>Category:       bin
>Synopsis:       log packets blocked by filter rules
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Sat Jun 03 13:50:01 PDT 2000
>Closed-Date:
>Last-Modified:
>Originator:     Joe Loughry
>Release:        3.4-STABLE
>Organization:
Lockheed Martin
>Environment:
FreeBSD miranda.dnvr.uswest.net 3.4-STABLE FreeBSD 3.4-STABLE #10: Sun May 28 21:32:42 MDT 2000     loughry@miranda.dnvr.uswest.net:/usr/src/sys/compile/MIRANDA  i386
>Description:
This patch adds a new log level "BLOCKED" that logs packets that were
dropped because of a filter rule.  It is similar to "set log tcp/ip,"
but logs only blocked packets, not every packet.
>How-To-Repeat:
Add the option "set log blocked" to your /etc/ppp/ppp.conf file.
>Fix:
Three files were changed: ip.c, log.c, log.h

*** ip.c.OLD    Sat Jun  3 14:27:38 2000
--- ip.c        Sat Jun  3 14:28:12 2000
***************
*** 440,457 ****
    struct udphdr *uh;
    struct icmp *icmph;
    char *ptop;
!   int mask, len, n, pri, logit, loglen, result;
    char logbuf[200];
  
    logit = (log_IsKept(LogTCPIP) || log_IsKept(LogDNS)) &&
            (!filter || filter->logok);
    loglen = 0;
    pri = 0;
  
    pip = (struct ip *)cp;
    uh = NULL;
  
!   if (logit && loglen < sizeof logbuf) {
      if (filter)
        snprintf(logbuf + loglen, sizeof logbuf - loglen, "%s ", filter->name);
      else
--- 440,458 ----
    struct udphdr *uh;
    struct icmp *icmph;
    char *ptop;
!   int mask, len, n, pri, logit, log_blocked, loglen, result;
    char logbuf[200];
  
    logit = (log_IsKept(LogTCPIP) || log_IsKept(LogDNS)) &&
            (!filter || filter->logok);
+   log_blocked = log_IsKept(LogBLOCKED) && filter->logok;
    loglen = 0;
    pri = 0;
  
    pip = (struct ip *)cp;
    uh = NULL;
  
!   if ((logit || log_blocked) && loglen < sizeof logbuf) {
      if (filter)
        snprintf(logbuf + loglen, sizeof logbuf - loglen, "%s ", filter->name);
      else
***************
*** 589,595 ****
    }
  
    if (filter && FilterCheck(pip, filter)) {
!     if (logit)
        log_Printf(LogTCPIP, "%s - BLOCKED\n", logbuf);
  #ifdef notdef
      if (direction == 0)
--- 590,598 ----
    }
  
    if (filter && FilterCheck(pip, filter)) {
!     if (log_blocked)
!       log_Printf(LogBLOCKED, "%s - BLOCKED\n", logbuf);
!     else if (logit)
        log_Printf(LogTCPIP, "%s - BLOCKED\n", logbuf);
  #ifdef notdef
      if (direction == 0)



*** log.h.OLD   Sat Jun  3 14:27:50 2000
--- log.h       Sat Jun  3 14:28:04 2000
***************
*** 28,57 ****
  
  #define LogMIN                (1)
  #define LogASYNC      (1)     /* syslog(LOG_INFO, ....)        */
! #define LogCBCP               (2)
! #define LogCCP                (3)
! #define LogCHAT               (4)
! #define LogCOMMAND    (5)
! #define LogCONNECT    (6)
! #define LogDEBUG      (7)     /* syslog(LOG_DEBUG, ....)       */
! #define LogDNS                (8)
! #define LogHDLC               (9)
! #define LogID0                (10)
! #define LogIPCP               (11)
! #define LogLCP                (12)
! #define LogLQM                (13)
! #define LogPHASE      (14)
! #define LogPHYSICAL   (15)    /* syslog(LOG_INFO, ....)        */
! #define LogSYNC               (16)    /* syslog(LOG_INFO, ....)        */
! #define LogTCPIP      (17)
! #define LogTIMER      (18)    /* syslog(LOG_DEBUG, ....)       */
! #define LogTUN                (19)    /* If set, tun%d is output with each message */
! #define LogWARN               (20)    /* Sent to VarTerm else syslog(LOG_WARNING, ) */
! #define LogERROR      (21)    /* syslog(LOG_ERR, ....), + sent to VarTerm */
! #define LogALERT      (22)    /* syslog(LOG_ALERT, ....)       */
  
! #define LogMAXCONF    (19)
! #define LogMAX                (22)
  
  struct mbuf;
  struct cmdargs;
--- 28,58 ----
  
  #define LogMIN                (1)
  #define LogASYNC      (1)     /* syslog(LOG_INFO, ....)        */
! #define LogBLOCKED    (2)
! #define LogCBCP               (3)
! #define LogCCP                (4)
! #define LogCHAT               (5)
! #define LogCOMMAND    (6)
! #define LogCONNECT    (7)
! #define LogDEBUG      (8)     /* syslog(LOG_DEBUG, ....)       */
! #define LogDNS                (9)
! #define LogHDLC               (10)
! #define LogID0                (11)
! #define LogIPCP               (12)
! #define LogLCP                (13)
! #define LogLQM                (14)
! #define LogPHASE      (15)
! #define LogPHYSICAL   (16)    /* syslog(LOG_INFO, ....)        */
! #define LogSYNC               (17)    /* syslog(LOG_INFO, ....)        */
! #define LogTCPIP      (18)
! #define LogTIMER      (19)    /* syslog(LOG_DEBUG, ....)       */
! #define LogTUN                (20)    /* If set, tun%d is output with each message */
! #define LogWARN               (21)    /* Sent to VarTerm else syslog(LOG_WARNING, ) */
! #define LogERROR      (22)    /* syslog(LOG_ERR, ....), + sent to VarTerm */
! #define LogALERT      (23)    /* syslog(LOG_ALERT, ....)       */
  
! #define LogMAXCONF    (20)
! #define LogMAX                (23)
  
  struct mbuf;
  struct cmdargs;


*** log.c.OLD   Sat Jun  3 14:27:44 2000
--- log.c       Sat Jun  3 14:27:57 2000
***************
*** 44,49 ****
--- 44,50 ----
  
  static const char * const LogNames[] = {
    "Async",
+   "Blocked",
    "CBCP",
    "CCP",
    "Chat",


>Release-Note:
>Audit-Trail:
>Unformatted:


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20000603204728.159CD37BC4E>