diff options
Diffstat (limited to 'include/net/netlabel.h')
| -rw-r--r-- | include/net/netlabel.h | 51 |
1 files changed, 33 insertions, 18 deletions
diff --git a/include/net/netlabel.h b/include/net/netlabel.h index e4d2d6baa983..17c442a4514e 100644 --- a/include/net/netlabel.h +++ b/include/net/netlabel.h | |||
| @@ -9,7 +9,7 @@ | |||
| 9 | */ | 9 | */ |
| 10 | 10 | ||
| 11 | /* | 11 | /* |
| 12 | * (c) Copyright Hewlett-Packard Development Company, L.P., 2006 | 12 | * (c) Copyright Hewlett-Packard Development Company, L.P., 2006, 2008 |
| 13 | * | 13 | * |
| 14 | * This program is free software; you can redistribute it and/or modify | 14 | * This program is free software; you can redistribute it and/or modify |
| 15 | * it under the terms of the GNU General Public License as published by | 15 | * it under the terms of the GNU General Public License as published by |
| @@ -72,8 +72,10 @@ struct cipso_v4_doi; | |||
| 72 | /* NetLabel NETLINK protocol version | 72 | /* NetLabel NETLINK protocol version |
| 73 | * 1: initial version | 73 | * 1: initial version |
| 74 | * 2: added static labels for unlabeled connections | 74 | * 2: added static labels for unlabeled connections |
| 75 | * 3: network selectors added to the NetLabel/LSM domain mapping and the | ||
| 76 | * CIPSO_V4_MAP_LOCAL CIPSO mapping was added | ||
| 75 | */ | 77 | */ |
| 76 | #define NETLBL_PROTO_VERSION 2 | 78 | #define NETLBL_PROTO_VERSION 3 |
| 77 | 79 | ||
| 78 | /* NetLabel NETLINK types/families */ | 80 | /* NetLabel NETLINK types/families */ |
| 79 | #define NETLBL_NLTYPE_NONE 0 | 81 | #define NETLBL_NLTYPE_NONE 0 |
| @@ -87,6 +89,8 @@ struct cipso_v4_doi; | |||
| 87 | #define NETLBL_NLTYPE_CIPSOV6_NAME "NLBL_CIPSOv6" | 89 | #define NETLBL_NLTYPE_CIPSOV6_NAME "NLBL_CIPSOv6" |
| 88 | #define NETLBL_NLTYPE_UNLABELED 5 | 90 | #define NETLBL_NLTYPE_UNLABELED 5 |
| 89 | #define NETLBL_NLTYPE_UNLABELED_NAME "NLBL_UNLBL" | 91 | #define NETLBL_NLTYPE_UNLABELED_NAME "NLBL_UNLBL" |
| 92 | #define NETLBL_NLTYPE_ADDRSELECT 6 | ||
| 93 | #define NETLBL_NLTYPE_ADDRSELECT_NAME "NLBL_ADRSEL" | ||
| 90 | 94 | ||
| 91 | /* | 95 | /* |
| 92 | * NetLabel - Kernel API for accessing the network packet label mappings. | 96 | * NetLabel - Kernel API for accessing the network packet label mappings. |
| @@ -200,7 +204,7 @@ struct netlbl_lsm_secattr { | |||
| 200 | u32 type; | 204 | u32 type; |
| 201 | char *domain; | 205 | char *domain; |
| 202 | struct netlbl_lsm_cache *cache; | 206 | struct netlbl_lsm_cache *cache; |
| 203 | union { | 207 | struct { |
| 204 | struct { | 208 | struct { |
| 205 | struct netlbl_lsm_secattr_catmap *cat; | 209 | struct netlbl_lsm_secattr_catmap *cat; |
| 206 | u32 lvl; | 210 | u32 lvl; |
| @@ -352,12 +356,9 @@ static inline void netlbl_secattr_free(struct netlbl_lsm_secattr *secattr) | |||
| 352 | int netlbl_cfg_map_del(const char *domain, struct netlbl_audit *audit_info); | 356 | int netlbl_cfg_map_del(const char *domain, struct netlbl_audit *audit_info); |
| 353 | int netlbl_cfg_unlbl_add_map(const char *domain, | 357 | int netlbl_cfg_unlbl_add_map(const char *domain, |
| 354 | struct netlbl_audit *audit_info); | 358 | struct netlbl_audit *audit_info); |
| 355 | int netlbl_cfg_cipsov4_add(struct cipso_v4_doi *doi_def, | ||
| 356 | struct netlbl_audit *audit_info); | ||
| 357 | int netlbl_cfg_cipsov4_add_map(struct cipso_v4_doi *doi_def, | 359 | int netlbl_cfg_cipsov4_add_map(struct cipso_v4_doi *doi_def, |
| 358 | const char *domain, | 360 | const char *domain, |
| 359 | struct netlbl_audit *audit_info); | 361 | struct netlbl_audit *audit_info); |
| 360 | int netlbl_cfg_cipsov4_del(u32 doi, struct netlbl_audit *audit_info); | ||
| 361 | 362 | ||
| 362 | /* | 363 | /* |
| 363 | * LSM security attribute operations | 364 | * LSM security attribute operations |
| @@ -380,12 +381,19 @@ int netlbl_secattr_catmap_setrng(struct netlbl_lsm_secattr_catmap *catmap, | |||
| 380 | int netlbl_enabled(void); | 381 | int netlbl_enabled(void); |
| 381 | int netlbl_sock_setattr(struct sock *sk, | 382 | int netlbl_sock_setattr(struct sock *sk, |
| 382 | const struct netlbl_lsm_secattr *secattr); | 383 | const struct netlbl_lsm_secattr *secattr); |
| 384 | void netlbl_sock_delattr(struct sock *sk); | ||
| 383 | int netlbl_sock_getattr(struct sock *sk, | 385 | int netlbl_sock_getattr(struct sock *sk, |
| 384 | struct netlbl_lsm_secattr *secattr); | 386 | struct netlbl_lsm_secattr *secattr); |
| 387 | int netlbl_conn_setattr(struct sock *sk, | ||
| 388 | struct sockaddr *addr, | ||
| 389 | const struct netlbl_lsm_secattr *secattr); | ||
| 390 | int netlbl_skbuff_setattr(struct sk_buff *skb, | ||
| 391 | u16 family, | ||
| 392 | const struct netlbl_lsm_secattr *secattr); | ||
| 385 | int netlbl_skbuff_getattr(const struct sk_buff *skb, | 393 | int netlbl_skbuff_getattr(const struct sk_buff *skb, |
| 386 | u16 family, | 394 | u16 family, |
| 387 | struct netlbl_lsm_secattr *secattr); | 395 | struct netlbl_lsm_secattr *secattr); |
| 388 | void netlbl_skbuff_err(struct sk_buff *skb, int error); | 396 | void netlbl_skbuff_err(struct sk_buff *skb, int error, int gateway); |
| 389 | 397 | ||
| 390 | /* | 398 | /* |
| 391 | * LSM label mapping cache operations | 399 | * LSM label mapping cache operations |
| @@ -404,22 +412,12 @@ static inline int netlbl_cfg_unlbl_add_map(const char *domain, | |||
| 404 | { | 412 | { |
| 405 | return -ENOSYS; | 413 | return -ENOSYS; |
| 406 | } | 414 | } |
| 407 | static inline int netlbl_cfg_cipsov4_add(struct cipso_v4_doi *doi_def, | ||
| 408 | struct netlbl_audit *audit_info) | ||
| 409 | { | ||
| 410 | return -ENOSYS; | ||
| 411 | } | ||
| 412 | static inline int netlbl_cfg_cipsov4_add_map(struct cipso_v4_doi *doi_def, | 415 | static inline int netlbl_cfg_cipsov4_add_map(struct cipso_v4_doi *doi_def, |
| 413 | const char *domain, | 416 | const char *domain, |
| 414 | struct netlbl_audit *audit_info) | 417 | struct netlbl_audit *audit_info) |
| 415 | { | 418 | { |
| 416 | return -ENOSYS; | 419 | return -ENOSYS; |
| 417 | } | 420 | } |
| 418 | static inline int netlbl_cfg_cipsov4_del(u32 doi, | ||
| 419 | struct netlbl_audit *audit_info) | ||
| 420 | { | ||
| 421 | return -ENOSYS; | ||
| 422 | } | ||
| 423 | static inline int netlbl_secattr_catmap_walk( | 421 | static inline int netlbl_secattr_catmap_walk( |
| 424 | struct netlbl_lsm_secattr_catmap *catmap, | 422 | struct netlbl_lsm_secattr_catmap *catmap, |
| 425 | u32 offset) | 423 | u32 offset) |
| @@ -456,18 +454,35 @@ static inline int netlbl_sock_setattr(struct sock *sk, | |||
| 456 | { | 454 | { |
| 457 | return -ENOSYS; | 455 | return -ENOSYS; |
| 458 | } | 456 | } |
| 457 | static inline void netlbl_sock_delattr(struct sock *sk) | ||
| 458 | { | ||
| 459 | } | ||
| 459 | static inline int netlbl_sock_getattr(struct sock *sk, | 460 | static inline int netlbl_sock_getattr(struct sock *sk, |
| 460 | struct netlbl_lsm_secattr *secattr) | 461 | struct netlbl_lsm_secattr *secattr) |
| 461 | { | 462 | { |
| 462 | return -ENOSYS; | 463 | return -ENOSYS; |
| 463 | } | 464 | } |
| 465 | static inline int netlbl_conn_setattr(struct sock *sk, | ||
| 466 | struct sockaddr *addr, | ||
| 467 | const struct netlbl_lsm_secattr *secattr) | ||
| 468 | { | ||
| 469 | return -ENOSYS; | ||
| 470 | } | ||
| 471 | static inline int netlbl_skbuff_setattr(struct sk_buff *skb, | ||
| 472 | u16 family, | ||
| 473 | const struct netlbl_lsm_secattr *secattr) | ||
| 474 | { | ||
| 475 | return -ENOSYS; | ||
| 476 | } | ||
| 464 | static inline int netlbl_skbuff_getattr(const struct sk_buff *skb, | 477 | static inline int netlbl_skbuff_getattr(const struct sk_buff *skb, |
| 465 | u16 family, | 478 | u16 family, |
| 466 | struct netlbl_lsm_secattr *secattr) | 479 | struct netlbl_lsm_secattr *secattr) |
| 467 | { | 480 | { |
| 468 | return -ENOSYS; | 481 | return -ENOSYS; |
| 469 | } | 482 | } |
| 470 | static inline void netlbl_skbuff_err(struct sk_buff *skb, int error) | 483 | static inline void netlbl_skbuff_err(struct sk_buff *skb, |
| 484 | int error, | ||
| 485 | int gateway) | ||
| 471 | { | 486 | { |
| 472 | return; | 487 | return; |
| 473 | } | 488 | } |
