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