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

Cache object: 7dfc82f9b1d7e7c28c740a92f0b4b392


[ 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.