The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/security/audit/bsm_domain.c

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*-
    2  * Copyright (c) 2008 Apple Inc.
    3  * All rights reserved.
    4  *
    5  * Redistribution and use in source and binary forms, with or without
    6  * modification, are permitted provided that the following conditions
    7  * are met:
    8  * 1.  Redistributions of source code must retain the above copyright
    9  *     notice, this list of conditions and the following disclaimer.
   10  * 2.  Redistributions in binary form must reproduce the above copyright
   11  *     notice, this list of conditions and the following disclaimer in the
   12  *     documentation and/or other materials provided with the distribution.
   13  * 3.  Neither the name of Apple Inc. ("Apple") nor the names of
   14  *     its contributors may be used to endorse or promote products derived
   15  *     from this software without specific prior written permission.
   16  *
   17  * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND
   18  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   20  * ARE DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR
   21  * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   22  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   23  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   24  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
   25  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
   26  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
   27  * POSSIBILITY OF SUCH DAMAGE. 
   28  */
   29 
   30 #include <sys/cdefs.h>
   31 __FBSDID("$FreeBSD$");
   32 
   33 #include <sys/param.h>
   34 #include <sys/socket.h>
   35 
   36 #include <security/audit/audit.h>
   37 
   38 #include <bsm/audit_domain.h>
   39 #include <bsm/audit_record.h>
   40 
   41 struct bsm_domain {
   42         u_short bd_bsm_domain;
   43         int     bd_local_domain;
   44 };
   45 
   46 #define PF_NO_LOCAL_MAPPING     -600
   47 
   48 static const struct bsm_domain bsm_domains[] = {
   49         { BSM_PF_UNSPEC, PF_UNSPEC },
   50         { BSM_PF_LOCAL, PF_LOCAL },
   51         { BSM_PF_INET, PF_INET },
   52         { BSM_PF_IMPLINK,
   53 #ifdef PF_IMPLINK
   54         PF_IMPLINK
   55 #else
   56         PF_NO_LOCAL_MAPPING
   57 #endif
   58         },
   59         { BSM_PF_PUP,
   60 #ifdef PF_PUP
   61         PF_PUP
   62 #else
   63         PF_NO_LOCAL_MAPPING
   64 #endif
   65         },
   66         { BSM_PF_CHAOS,
   67 #ifdef PF_CHAOS
   68         PF_CHAOS
   69 #else
   70         PF_NO_LOCAL_MAPPING
   71 #endif
   72         },
   73         { BSM_PF_NS,
   74 #ifdef PF_NS
   75         PF_NS
   76 #else
   77         PF_NO_LOCAL_MAPPING
   78 #endif
   79         },
   80         { BSM_PF_NBS,
   81 #ifdef PF_NBS
   82         PF_NBS
   83 #else
   84         PF_NO_LOCAL_MAPPING
   85 #endif
   86         },
   87         { BSM_PF_ECMA,
   88 #ifdef PF_ECMA
   89         PF_ECMA
   90 #else
   91         PF_NO_LOCAL_MAPPING
   92 #endif
   93         },
   94         { BSM_PF_DATAKIT,
   95 #ifdef PF_DATAKIT
   96         PF_DATAKIT
   97 #else
   98         PF_NO_LOCAL_MAPPING
   99 #endif
  100         },
  101         { BSM_PF_CCITT,
  102 #ifdef PF_CCITT
  103         PF_CCITT
  104 #else
  105         PF_NO_LOCAL_MAPPING
  106 #endif
  107         },
  108         { BSM_PF_SNA, PF_SNA },
  109         { BSM_PF_DECnet, PF_DECnet },
  110         { BSM_PF_DLI,
  111 #ifdef PF_DLI
  112         PF_DLI
  113 #else
  114         PF_NO_LOCAL_MAPPING
  115 #endif
  116         },
  117         { BSM_PF_LAT,
  118 #ifdef PF_LAT
  119         PF_LAT
  120 #else
  121         PF_NO_LOCAL_MAPPING
  122 #endif
  123         },
  124         { BSM_PF_HYLINK,
  125 #ifdef PF_HYLINK
  126         PF_HYLINK
  127 #else
  128         PF_NO_LOCAL_MAPPING
  129 #endif
  130         },
  131         { BSM_PF_APPLETALK, PF_APPLETALK },
  132         { BSM_PF_NIT,
  133 #ifdef PF_NIT
  134         PF_NIT
  135 #else
  136         PF_NO_LOCAL_MAPPING
  137 #endif
  138         },
  139         { BSM_PF_802,
  140 #ifdef PF_802
  141         PF_802
  142 #else
  143         PF_NO_LOCAL_MAPPING
  144 #endif
  145         },
  146         { BSM_PF_OSI,
  147 #ifdef PF_OSI
  148         PF_OSI
  149 #else
  150         PF_NO_LOCAL_MAPPING
  151 #endif
  152         },
  153         { BSM_PF_X25,
  154 #ifdef PF_X25
  155         PF_X25
  156 #else
  157         PF_NO_LOCAL_MAPPING
  158 #endif
  159         },
  160         { BSM_PF_OSINET,
  161 #ifdef PF_OSINET
  162         PF_OSINET
  163 #else
  164         PF_NO_LOCAL_MAPPING
  165 #endif
  166         },
  167         { BSM_PF_GOSIP,
  168 #ifdef PF_GOSIP
  169         PF_GOSIP
  170 #else
  171         PF_NO_LOCAL_MAPPING
  172 #endif
  173         },
  174         { BSM_PF_IPX, PF_IPX },
  175         { BSM_PF_ROUTE, PF_ROUTE },
  176         { BSM_PF_LINK,
  177 #ifdef PF_LINK
  178         PF_LINK
  179 #else
  180         PF_NO_LOCAL_MAPPING
  181 #endif
  182         },
  183         { BSM_PF_INET6, PF_INET6 },
  184         { BSM_PF_KEY, PF_KEY },
  185         { BSM_PF_NCA,
  186 #ifdef PF_NCA
  187         PF_NCA
  188 #else
  189         PF_NO_LOCAL_MAPPING
  190 #endif
  191         },
  192         { BSM_PF_POLICY,
  193 #ifdef PF_POLICY
  194         PF_POLICY
  195 #else
  196         PF_NO_LOCAL_MAPPING
  197 #endif
  198         },
  199         { BSM_PF_INET_OFFLOAD,
  200 #ifdef PF_INET_OFFLOAD
  201         PF_INET_OFFLOAD
  202 #else
  203         PF_NO_LOCAL_MAPPING
  204 #endif
  205         },
  206         { BSM_PF_NETBIOS,
  207 #ifdef PF_NETBIOS
  208         PF_NETBIOS
  209 #else
  210         PF_NO_LOCAL_MAPPING
  211 #endif
  212         },
  213         { BSM_PF_ISO,
  214 #ifdef PF_ISO
  215         PF_ISO
  216 #else
  217         PF_NO_LOCAL_MAPPING
  218 #endif
  219         },
  220         { BSM_PF_XTP,
  221 #ifdef PF_XTP
  222         PF_XTP
  223 #else
  224         PF_NO_LOCAL_MAPPING
  225 #endif
  226         },
  227         { BSM_PF_COIP,
  228 #ifdef PF_COIP
  229         PF_COIP
  230 #else
  231         PF_NO_LOCAL_MAPPING
  232 #endif
  233         },
  234         { BSM_PF_CNT,
  235 #ifdef PF_CNT
  236         PF_CNT
  237 #else
  238         PF_NO_LOCAL_MAPPING
  239 #endif
  240         },
  241         { BSM_PF_RTIP,
  242 #ifdef PF_RTIP
  243         PF_RTIP
  244 #else
  245         PF_NO_LOCAL_MAPPING
  246 #endif
  247         },
  248         { BSM_PF_SIP,
  249 #ifdef PF_SIP
  250         PF_SIP
  251 #else
  252         PF_NO_LOCAL_MAPPING
  253 #endif
  254         },
  255         { BSM_PF_PIP,
  256 #ifdef PF_PIP
  257         PF_PIP
  258 #else
  259         PF_NO_LOCAL_MAPPING
  260 #endif
  261         },
  262         { BSM_PF_ISDN,
  263 #ifdef PF_ISDN
  264         PF_ISDN
  265 #else
  266         PF_NO_LOCAL_MAPPING
  267 #endif
  268         },
  269         { BSM_PF_E164,
  270 #ifdef PF_E164
  271         PF_E164
  272 #else
  273         PF_NO_LOCAL_MAPPING
  274 #endif
  275         },
  276         { BSM_PF_NATM,
  277 #ifdef PF_NATM
  278         PF_NATM
  279 #else
  280         PF_NO_LOCAL_MAPPING
  281 #endif
  282         },
  283         { BSM_PF_ATM,
  284 #ifdef PF_ATM
  285         PF_ATM
  286 #else
  287         PF_NO_LOCAL_MAPPING
  288 #endif
  289         },
  290         { BSM_PF_NETGRAPH,
  291 #ifdef PF_NETGRAPH
  292         PF_NETGRAPH
  293 #else
  294         PF_NO_LOCAL_MAPPING
  295 #endif
  296         },
  297         { BSM_PF_SLOW,
  298 #ifdef PF_SLOW
  299         PF_SLOW
  300 #else
  301         PF_NO_LOCAL_MAPPING
  302 #endif
  303         },
  304         { BSM_PF_SCLUSTER,
  305 #ifdef PF_SCLUSTER
  306         PF_SCLUSTER
  307 #else
  308         PF_NO_LOCAL_MAPPING
  309 #endif
  310         },
  311         { BSM_PF_ARP,
  312 #ifdef PF_ARP
  313         PF_ARP
  314 #else
  315         PF_NO_LOCAL_MAPPING
  316 #endif
  317         },
  318         { BSM_PF_BLUETOOTH,
  319 #ifdef PF_BLUETOOTH
  320         PF_BLUETOOTH
  321 #else
  322         PF_NO_LOCAL_MAPPING
  323 #endif
  324         },
  325         { BSM_PF_AX25,
  326 #ifdef PF_AX25
  327         PF_AX25
  328 #else
  329         PF_NO_LOCAL_MAPPING
  330 #endif
  331         },
  332         { BSM_PF_ROSE,
  333 #ifdef PF_ROSE
  334         PF_ROSE
  335 #else
  336         PF_NO_LOCAL_MAPPING
  337 #endif
  338         },
  339         { BSM_PF_NETBEUI,
  340 #ifdef PF_NETBEUI
  341         PF_NETBEUI
  342 #else
  343         PF_NO_LOCAL_MAPPING
  344 #endif
  345         },
  346         { BSM_PF_SECURITY,
  347 #ifdef PF_SECURITY
  348         PF_SECURITY
  349 #else
  350         PF_NO_LOCAL_MAPPING
  351 #endif
  352         },
  353         { BSM_PF_PACKET,
  354 #ifdef PF_PACKET
  355         PF_PACKET
  356 #else
  357         PF_NO_LOCAL_MAPPING
  358 #endif
  359         },
  360         { BSM_PF_ASH,
  361 #ifdef PF_ASH
  362         PF_ASH
  363 #else
  364         PF_NO_LOCAL_MAPPING
  365 #endif
  366         },
  367         { BSM_PF_ECONET,
  368 #ifdef PF_ECONET
  369         PF_ECONET
  370 #else
  371         PF_NO_LOCAL_MAPPING
  372 #endif
  373         },
  374         { BSM_PF_ATMSVC,
  375 #ifdef PF_ATMSVC
  376         PF_ATMSVC
  377 #else
  378         PF_NO_LOCAL_MAPPING
  379 #endif
  380         },
  381         { BSM_PF_IRDA,
  382 #ifdef PF_IRDA
  383         PF_IRDA
  384 #else
  385         PF_NO_LOCAL_MAPPING
  386 #endif
  387         },
  388         { BSM_PF_PPPOX,
  389 #ifdef PF_PPPOX
  390         PF_PPPOX
  391 #else
  392         PF_NO_LOCAL_MAPPING
  393 #endif
  394         },
  395         { BSM_PF_WANPIPE,
  396 #ifdef PF_WANPIPE
  397         PF_WANPIPE
  398 #else
  399         PF_NO_LOCAL_MAPPING
  400 #endif
  401         },
  402         { BSM_PF_LLC,
  403 #ifdef PF_LLC
  404         PF_LLC
  405 #else
  406         PF_NO_LOCAL_MAPPING
  407 #endif
  408         },
  409         { BSM_PF_CAN,
  410 #ifdef PF_CAN
  411         PF_CAN
  412 #else
  413         PF_NO_LOCAL_MAPPING
  414 #endif
  415         },
  416         { BSM_PF_TIPC,
  417 #ifdef PF_TIPC
  418         PF_TIPC
  419 #else
  420         PF_NO_LOCAL_MAPPING
  421 #endif
  422         },
  423         { BSM_PF_IUCV,
  424 #ifdef PF_IUCV
  425         PF_IUCV
  426 #else
  427         PF_NO_LOCAL_MAPPING
  428 #endif
  429         },
  430         { BSM_PF_RXRPC,
  431 #ifdef PF_RXRPC
  432         PF_RXRPC
  433 #else
  434         PF_NO_LOCAL_MAPPING
  435 #endif
  436         },
  437         { BSM_PF_PHONET,
  438 #ifdef PF_PHONET
  439         PF_PHONET
  440 #else
  441         PF_NO_LOCAL_MAPPING
  442 #endif
  443         },
  444 };
  445 static const int bsm_domains_count = sizeof(bsm_domains) /
  446             sizeof(bsm_domains[0]);
  447 
  448 static const struct bsm_domain *
  449 bsm_lookup_local_domain(int local_domain)
  450 {
  451         int i;
  452 
  453         for (i = 0; i < bsm_domains_count; i++) {
  454                 if (bsm_domains[i].bd_local_domain == local_domain)
  455                         return (&bsm_domains[i]);
  456         }
  457         return (NULL);
  458 }
  459 
  460 u_short
  461 au_domain_to_bsm(int local_domain)
  462 {
  463         const struct bsm_domain *bstp;
  464 
  465         bstp = bsm_lookup_local_domain(local_domain);
  466         if (bstp == NULL)
  467                 return (BSM_PF_UNKNOWN);
  468         return (bstp->bd_bsm_domain);
  469 }
  470 
  471 static const struct bsm_domain *
  472 bsm_lookup_bsm_domain(u_short bsm_domain)
  473 {
  474         int i;
  475 
  476         for (i = 0; i < bsm_domains_count; i++) {
  477                 if (bsm_domains[i].bd_bsm_domain == bsm_domain)
  478                         return (&bsm_domains[i]);
  479         }
  480         return (NULL);
  481 }
  482 
  483 int
  484 au_bsm_to_domain(u_short bsm_domain, int *local_domainp)
  485 {
  486         const struct bsm_domain *bstp;
  487 
  488         bstp = bsm_lookup_bsm_domain(bsm_domain);
  489         if (bstp == NULL || bstp->bd_local_domain)
  490                 return (-1);
  491         *local_domainp = bstp->bd_local_domain;
  492         return (0);
  493 }

Cache object: 94b28c43c27b12ec7076db9652ff834f


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.