sort.c File Reference


Detailed Description

Implementation of seaudit sort routines.

Author:
Jeremy A. Mowery jmowery@tresys.com

Jason Tang jtang@tresys.com

Copyright (C) 2003-2007 Tresys Technology, LLC

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

Definition in file sort.c.

#include "seaudit_internal.h"
#include <apol/util.h>
#include <errno.h>
#include <string.h>

Go to the source code of this file.


Classes

struct  seaudit_sort
struct  sort_name_map

Typedefs

typedef int( sort_comp_func )(const seaudit_sort_t *sort, const seaudit_message_t *a, const seaudit_message_t *b)
 Callback that compares two messages.
typedef int( sort_supported_func )(const seaudit_sort_t *sort, const seaudit_message_t *m)
 Callback that returns non-zero if the sort routine can handle the given message, 0 if not supported.

Functions

seaudit_sort_tseaudit_sort_create_from_sort (const seaudit_sort_t *sort)
 Create a new sort object, initialized with the data from an existing sort.
void seaudit_sort_destroy (seaudit_sort_t **sort)
 Destroy the referenced seaudit_sort object.
seaudit_sort_tsort_create (const char *name, sort_comp_func *comp, sort_supported_func support, const int direction)
seaudit_sort_tsort_create_from_sort (const seaudit_sort_t *sort)
 Create and return a new sort object, initialized with the data from an existing sort object.
int sort_message_type_comp (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *a, const seaudit_message_t *b)
int sort_message_type_support (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *msg)
seaudit_sort_tseaudit_sort_by_message_type (const int direction)
 Instruct a model to sort messages by message type: boolean changes, then avc denies, then avc allows, then policy load messages.
int sort_date_comp (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *a, const seaudit_message_t *b)
 Given two dates compare them, checking to see if the dates passed in have valid years and correcting if not before comparing.
int sort_date_support (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *msg)
seaudit_sort_tseaudit_sort_by_date (const int direction)
 Instruct a model to sort messages by chronological order.
int sort_host_comp (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *a, const seaudit_message_t *b)
int sort_host_support (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *msg)
seaudit_sort_tseaudit_sort_by_host (const int direction)
 Instruct a model to sort messages by host name, alphabetically.
int sort_perm_comp (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *a, const seaudit_message_t *b)
int sort_perm_support (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *msg)
seaudit_sort_tseaudit_sort_by_permission (const int direction)
 Instruct a model to sort AVC messages by permissions, alphabetically.
int sort_source_user_comp (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *a, const seaudit_message_t *b)
int sort_source_user_support (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *msg)
seaudit_sort_tseaudit_sort_by_source_user (const int direction)
 Instruct a model to sort AVC messages by source context's user, alphabetically.
int sort_source_role_comp (const seaudit_sort_t *sort __attribute((unused)), const seaudit_message_t *a, const seaudit_message_t *b)
int sort_source_role_support (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *msg)
seaudit_sort_tseaudit_sort_by_source_role (const int direction)
 Instruct a model to sort AVC messages by source context's role, alphabetically.
int sort_source_type_comp (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *a, const seaudit_message_t *b)
int sort_source_type_support (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *msg)
seaudit_sort_tseaudit_sort_by_source_type (const int direction)
 Instruct a model to sort AVC messages by source context's type, alphabetically.
int sort_target_user_comp (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *a, const seaudit_message_t *b)
int sort_target_user_support (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *msg)
seaudit_sort_tseaudit_sort_by_target_user (const int direction)
 Instruct a model to sort AVC messages by target context's user, alphabetically.
int sort_target_role_comp (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *a, const seaudit_message_t *b)
int sort_target_role_support (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *msg)
seaudit_sort_tseaudit_sort_by_target_role (const int direction)
 Instruct a model to sort AVC messages by target context's role, alphabetically.
int sort_target_type_comp (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *a, const seaudit_message_t *b)
int sort_target_type_support (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *msg)
seaudit_sort_tseaudit_sort_by_target_type (const int direction)
 Instruct a model to sort AVC messages by target context's type, alphabetically.
int sort_object_class_comp (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *a, const seaudit_message_t *b)
int sort_object_class_support (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *msg)
seaudit_sort_tseaudit_sort_by_object_class (const int direction)
 Instruct a model to sort AVC messages by object class, alphabetically.
int sort_executable_comp (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *a, const seaudit_message_t *b)
int sort_executable_support (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *msg)
seaudit_sort_tseaudit_sort_by_executable (const int direction)
 Instruct a model to sort AVC messages by the executable, alphabetically.
int sort_command_comp (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *a, const seaudit_message_t *b)
int sort_command_support (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *msg)
seaudit_sort_tseaudit_sort_by_command (const int direction)
 Instruct a model to sort AVC messages by the command, alphabetically.
int sort_name_comp (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *a, const seaudit_message_t *b)
int sort_name_support (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *msg)
seaudit_sort_tseaudit_sort_by_name (const int direction)
 Instruct a model to sort AVC messages by the name, alphabetically.
int sort_path_comp (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *a, const seaudit_message_t *b)
int sort_path_support (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *msg)
seaudit_sort_tseaudit_sort_by_path (const int direction)
 Instruct a model to sort AVC messages by the path, alphabetically.
int sort_device_comp (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *a, const seaudit_message_t *b)
int sort_device_support (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *msg)
seaudit_sort_tseaudit_sort_by_device (const int direction)
 Instruct a model to sort AVC messages by the device, alphabetically.
int sort_inode_comp (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *a, const seaudit_message_t *b)
int sort_inode_support (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *msg)
seaudit_sort_tseaudit_sort_by_inode (const int direction)
 Instruct a model to sort AVC messages by the object's inode.
int sort_pid_comp (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *a, const seaudit_message_t *b)
int sort_pid_support (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *msg)
seaudit_sort_tseaudit_sort_by_pid (const int direction)
 Instruct a model to sort AVC messages by the process ID.
int sort_port_comp (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *a, const seaudit_message_t *b)
int sort_port_support (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *msg)
seaudit_sort_tseaudit_sort_by_port (const int direction)
 Instruct a model to sort AVC messages by the port number.
int sort_laddr_comp (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *a, const seaudit_message_t *b)
int sort_laddr_support (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *msg)
seaudit_sort_tseaudit_sort_by_laddr (const int direction)
 Instruct a model to sort AVC messages by local address, alphabetically.
int sort_lport_comp (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *a, const seaudit_message_t *b)
int sort_lport_support (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *msg)
seaudit_sort_tseaudit_sort_by_lport (const int direction)
 Instruct a model to sort AVC messages by the local port number.
int sort_faddr_comp (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *a, const seaudit_message_t *b)
int sort_faddr_support (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *msg)
seaudit_sort_tseaudit_sort_by_faddr (const int direction)
 Instruct a model to sort AVC messages by foreign address, alphabetically.
int sort_fport_comp (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *a, const seaudit_message_t *b)
int sort_fport_support (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *msg)
seaudit_sort_tseaudit_sort_by_fport (const int direction)
 Instruct a model to sort AVC messages by the foreign port number.
int sort_saddr_comp (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *a, const seaudit_message_t *b)
int sort_saddr_support (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *msg)
seaudit_sort_tseaudit_sort_by_saddr (const int direction)
 Instruct a model to sort AVC messages by source address, alphabetically.
int sort_sport_comp (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *a, const seaudit_message_t *b)
int sort_sport_support (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *msg)
seaudit_sort_tseaudit_sort_by_sport (const int direction)
 Instruct a model to sort AVC messages by the source port number.
int sort_daddr_comp (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *a, const seaudit_message_t *b)
int sort_daddr_support (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *msg)
seaudit_sort_tseaudit_sort_by_daddr (const int direction)
 Instruct a model to sort AVC messages by destination address, alphabetically.
int sort_dport_comp (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *a, const seaudit_message_t *b)
int sort_dport_support (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *msg)
seaudit_sort_tseaudit_sort_by_dport (const int direction)
 Instruct a model to sort AVC messages by the destination port number.
int sort_key_comp (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *a, const seaudit_message_t *b)
int sort_key_support (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *msg)
seaudit_sort_tseaudit_sort_by_key (const int direction)
 Instruct a model to sort AVC messages by the IPC call's key.
int sort_cap_comp (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *a, const seaudit_message_t *b)
int sort_cap_support (const seaudit_sort_t *sort __attribute__((unused)), const seaudit_message_t *msg)
seaudit_sort_tseaudit_sort_by_cap (const int direction)
 Instruct a model to sort AVC messages by the process capability value.
seaudit_sort_tsort_create_from_name (const char *name, int direction)
 Create and return a new sort object based upon the name of the sort (as returned by sort_get_name()).
int sort_is_supported (const seaudit_sort_t *sort, const seaudit_message_t *msg)
 Given a sort object and a message, return non-zero if this sort object could operate on the message, 0 if not.
int sort_comp (const seaudit_sort_t *sort, const seaudit_message_t *a, const seaudit_message_t *b)
 Invoke a sort object's comparison function.
const char * sort_get_name (const seaudit_sort_t *sort)
 Return the type of sort this sort object is.
int sort_get_direction (const seaudit_sort_t *sort)
 Return the sort direction for a sort object.

Variables

const struct sort_name_map create_map []

Typedef Documentation

typedef int( sort_comp_func)(const seaudit_sort_t *sort, const seaudit_message_t *a, const seaudit_message_t *b)
 

Callback that compares two messages.

Definition at line 35 of file sort.c.

typedef int( sort_supported_func)(const seaudit_sort_t *sort, const seaudit_message_t *m)
 

Callback that returns non-zero if the sort routine can handle the given message, 0 if not supported.

Definition at line 41 of file sort.c.


Function Documentation

seaudit_sort_t* seaudit_sort_create_from_sort const seaudit_sort_t sort  ) 
 

Create a new sort object, initialized with the data from an existing sort.

The new sort will not be attached to any model.

Parameters:
sort Sort to clone.
Returns:
A cloned sort object, or NULL upon error. The caller is responsible for calling seaudit_sort_destroy() afterwards.

Definition at line 51 of file sort.c.

References seaudit_sort::comp, seaudit_sort::direction, seaudit_sort::name, seaudit_sort_t, and seaudit_sort::support.

00052 {
00053         seaudit_sort_t *s;
00054         if (sort == NULL) {
00055                 errno = EINVAL;
00056                 return NULL;
00057         }
00058         if ((s = calloc(1, sizeof(*s))) == NULL) {
00059                 return NULL;
00060         }
00061         s->name = sort->name;
00062         s->comp = sort->comp;
00063         s->support = sort->support;
00064         s->direction = sort->direction;
00065         return s;
00066 }

void seaudit_sort_destroy seaudit_sort_t **  sort  ) 
 

Destroy the referenced seaudit_sort object.

Parameters:
sort Sort object to destroy. The pointer will be set to NULL afterwards. (If pointer is already NULL then do nothing.)

Definition at line 68 of file sort.c.

References seaudit_sort_t.

Referenced by message_view_on_column_click(), model_sort_dup(), and sort_free().

00069 {
00070         if (sort != NULL && *sort != NULL) {
00071                 free(*sort);
00072                 *sort = NULL;
00073         }
00074 }

seaudit_sort_t* sort_create const char *  name,
sort_comp_func comp,
sort_supported_func  support,
const int  direction
[static]
 

Definition at line 76 of file sort.c.

References seaudit_sort::comp, seaudit_sort::direction, seaudit_sort::name, seaudit_sort_t, and seaudit_sort::support.

Referenced by seaudit_sort_by_cap(), seaudit_sort_by_command(), seaudit_sort_by_daddr(), seaudit_sort_by_date(), seaudit_sort_by_device(), seaudit_sort_by_dport(), seaudit_sort_by_executable(), seaudit_sort_by_faddr(), seaudit_sort_by_fport(), seaudit_sort_by_host(), seaudit_sort_by_inode(), seaudit_sort_by_key(), seaudit_sort_by_laddr(), seaudit_sort_by_lport(), seaudit_sort_by_message_type(), seaudit_sort_by_name(), seaudit_sort_by_object_class(), seaudit_sort_by_path(), seaudit_sort_by_permission(), seaudit_sort_by_pid(), seaudit_sort_by_port(), seaudit_sort_by_saddr(), seaudit_sort_by_source_role(), seaudit_sort_by_source_type(), seaudit_sort_by_source_user(), seaudit_sort_by_sport(), seaudit_sort_by_target_role(), seaudit_sort_by_target_type(), seaudit_sort_by_target_user(), and sort_create_from_sort().

00077 {
00078         seaudit_sort_t *s = calloc(1, sizeof(*s));
00079         if (s == NULL) {
00080                 return NULL;
00081         }
00082         s->name = name;
00083         s->comp = comp;
00084         s->support = support;
00085         s->direction = direction;
00086         return s;
00087 }

seaudit_sort_t* sort_create_from_sort const seaudit_sort_t sort  ) 
 

Create and return a new sort object, initialized with the data from an existing sort object.

The new sort object will not be attached to any models.

Parameters:
sort Sort object to clone.
Returns:
A cloned sort object, or NULL upon error. The caller is responsible for calling seaudit_sort_destroy() afterwards.

Definition at line 89 of file sort.c.

References seaudit_sort::comp, seaudit_sort::direction, seaudit_sort::name, seaudit_sort_t, sort_create(), and seaudit_sort::support.

Referenced by model_sort_dup().

00090 {
00091         if (sort == NULL) {
00092                 errno = EINVAL;
00093                 return NULL;
00094         }
00095         return sort_create(sort->name, sort->comp, sort->support, sort->direction);
00096 }

int sort_message_type_comp const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t a,
const seaudit_message_t b
[static]
 

Definition at line 98 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_avc_message::msg, seaudit_message_t, seaudit_sort_t, and seaudit_message::type.

Referenced by seaudit_sort_by_message_type().

00100 {
00101         if (a->type != b->type) {
00102                 return a->type - b->type;
00103         }
00104         if (a->type == SEAUDIT_MESSAGE_TYPE_AVC) {
00105                 return a->data.avc->msg - b->data.avc->msg;
00106         }
00107         return 0;
00108 }

int sort_message_type_support const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t msg
[static]
 

Definition at line 110 of file sort.c.

References seaudit_message_t, seaudit_sort_t, and seaudit_message::type.

Referenced by seaudit_sort_by_message_type().

00111 {
00112         return msg->type != SEAUDIT_MESSAGE_TYPE_INVALID;
00113 }

seaudit_sort_t* seaudit_sort_by_message_type const int  direction  ) 
 

Instruct a model to sort messages by message type: boolean changes, then avc denies, then avc allows, then policy load messages.

Parameters:
direction Direction to sort. Non-negative for ascending, negative for descending.
Returns:
Sort object for this criterion, or NULL upon error. The caller is responsible for calling seaudit_sort_destroy() afterwards.

Definition at line 115 of file sort.c.

References seaudit_sort_t, sort_create(), sort_message_type_comp(), and sort_message_type_support().

00116 {
00117         return sort_create("message_type", sort_message_type_comp, sort_message_type_support, direction);
00118 }

int sort_date_comp const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t a,
const seaudit_message_t b
[static]
 

Given two dates compare them, checking to see if the dates passed in have valid years and correcting if not before comparing.

Definition at line 124 of file sort.c.

References seaudit_message::date_stamp, seaudit_message_t, and seaudit_sort_t.

Referenced by seaudit_sort_by_date().

00126 {
00127         /* tm has year, month, day, hour, min, sec */
00128         /* if we should compare the years */
00129         struct tm *t1 = a->date_stamp;
00130         struct tm *t2 = b->date_stamp;
00131         int retval;
00132         if (t1->tm_year != 0 && t2->tm_year != 0 && (retval = t1->tm_year - t2->tm_year) != 0) {
00133                 return retval;
00134         }
00135         if ((retval = t1->tm_mon - t2->tm_mon) != 0) {
00136                 return retval;
00137         }
00138         if ((retval = t1->tm_mday - t2->tm_mday) != 0) {
00139                 return retval;
00140         }
00141         if ((retval = t1->tm_hour - t2->tm_hour) != 0) {
00142                 return retval;
00143         }
00144         if ((retval = t1->tm_min - t2->tm_min) != 0) {
00145                 return retval;
00146         }
00147         if ((retval = t1->tm_sec - t2->tm_sec) != 0) {
00148                 return retval;
00149         }
00150         return 0;
00151 }

int sort_date_support const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t msg
[static]
 

Definition at line 153 of file sort.c.

References seaudit_message::date_stamp, seaudit_message_t, and seaudit_sort_t.

Referenced by seaudit_sort_by_date().

00154 {
00155         return msg->date_stamp != NULL;
00156 }

seaudit_sort_t* seaudit_sort_by_date const int  direction  ) 
 

Instruct a model to sort messages by chronological order.

Parameters:
direction Direction to sort. Non-negative for ascending, negative for descending.
Returns:
Sort object for this criterion, or NULL upon error. The caller is responsible for calling seaudit_sort_destroy() afterwards.

Definition at line 158 of file sort.c.

References seaudit_sort_t, sort_create(), sort_date_comp(), and sort_date_support().

00159 {
00160         return sort_create("date", sort_date_comp, sort_date_support, direction);
00161 }

int sort_host_comp const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t a,
const seaudit_message_t b
[static]
 

Definition at line 163 of file sort.c.

References seaudit_message::host, seaudit_message_t, and seaudit_sort_t.

Referenced by seaudit_sort_by_host().

00165 {
00166         return strcmp(a->host, b->host);
00167 }

int sort_host_support const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t msg
[static]
 

Definition at line 169 of file sort.c.

References seaudit_message::host, seaudit_message_t, and seaudit_sort_t.

Referenced by seaudit_sort_by_host().

00170 {
00171         return msg->host != NULL;
00172 }

seaudit_sort_t* seaudit_sort_by_host const int  direction  ) 
 

Instruct a model to sort messages by host name, alphabetically.

Parameters:
direction Direction to sort. Non-negative for ascending, negative for descending.
Returns:
Sort object for this criterion, or NULL upon error. The caller is responsible for calling seaudit_sort_destroy() afterwards.

Definition at line 174 of file sort.c.

References seaudit_sort_t, sort_create(), sort_host_comp(), and sort_host_support().

00175 {
00176         return sort_create("host", sort_host_comp, sort_host_support, direction);
00177 }

int sort_perm_comp const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t a,
const seaudit_message_t b
[static]
 

Definition at line 179 of file sort.c.

References apol_str_strcmp(), apol_vector_compare(), seaudit_message::avc, seaudit_message::data, seaudit_avc_message::perms, seaudit_message_t, and seaudit_sort_t.

Referenced by seaudit_sort_by_permission().

00181 {
00182         size_t i;
00183         return apol_vector_compare(a->data.avc->perms, b->data.avc->perms, apol_str_strcmp, NULL, &i);
00184 }

int sort_perm_support const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t msg
[static]
 

Definition at line 186 of file sort.c.

References apol_vector_get_size(), seaudit_message::avc, seaudit_message::data, seaudit_avc_message::perms, seaudit_message_t, SEAUDIT_MESSAGE_TYPE_AVC, seaudit_sort_t, and seaudit_message::type.

Referenced by seaudit_sort_by_permission().

00187 {
00188         return msg->type == SEAUDIT_MESSAGE_TYPE_AVC &&
00189                 msg->data.avc->perms != NULL && apol_vector_get_size(msg->data.avc->perms) >= 1;
00190 }

seaudit_sort_t* seaudit_sort_by_permission const int  direction  ) 
 

Instruct a model to sort AVC messages by permissions, alphabetically.

Non-AVC messages will be placed below AVC ones.

Parameters:
direction Direction to sort. Non-negative for ascending, negative for descending.
Returns:
Sort object for this criterion, or NULL upon error. The caller is responsible for calling seaudit_sort_destroy() afterwards.

Definition at line 192 of file sort.c.

References seaudit_sort_t, sort_create(), sort_perm_comp(), and sort_perm_support().

00193 {
00194         return sort_create("permission", sort_perm_comp, sort_perm_support, direction);
00195 }

int sort_source_user_comp const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t a,
const seaudit_message_t b
[static]
 

Definition at line 197 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_message_t, seaudit_sort_t, and seaudit_avc_message::suser.

Referenced by seaudit_sort_by_source_user().

00199 {
00200         return strcmp(a->data.avc->suser, b->data.avc->suser);
00201 }

int sort_source_user_support const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t msg
[static]
 

Definition at line 203 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_message_t, SEAUDIT_MESSAGE_TYPE_AVC, seaudit_sort_t, seaudit_avc_message::suser, and seaudit_message::type.

Referenced by seaudit_sort_by_source_user().

00204 {
00205         return msg->type == SEAUDIT_MESSAGE_TYPE_AVC && msg->data.avc->suser != NULL;
00206 }

seaudit_sort_t* seaudit_sort_by_source_user const int  direction  ) 
 

Instruct a model to sort AVC messages by source context's user, alphabetically.

Non-AVC messages will be placed below AVC ones.

Parameters:
direction Direction to sort. Non-negative for ascending, negative for descending.
Returns:
Sort object for this criterion, or NULL upon error. The caller is responsible for calling seaudit_sort_destroy() afterwards.

Definition at line 208 of file sort.c.

References seaudit_sort_t, sort_create(), sort_source_user_comp(), and sort_source_user_support().

00209 {
00210         return sort_create("source_user", sort_source_user_comp, sort_source_user_support, direction);
00211 }

int sort_source_role_comp const seaudit_sort_t *sort   __attribute((unused)),
const seaudit_message_t a,
const seaudit_message_t b
[static]
 

Definition at line 213 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_message_t, seaudit_sort_t, and seaudit_avc_message::srole.

Referenced by seaudit_sort_by_source_role().

00215 {
00216         return strcmp(a->data.avc->srole, b->data.avc->srole);
00217 }

int sort_source_role_support const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t msg
[static]
 

Definition at line 219 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_message_t, SEAUDIT_MESSAGE_TYPE_AVC, seaudit_sort_t, seaudit_avc_message::srole, and seaudit_message::type.

Referenced by seaudit_sort_by_source_role().

00220 {
00221         return msg->type == SEAUDIT_MESSAGE_TYPE_AVC && msg->data.avc->srole != NULL;
00222 }

seaudit_sort_t* seaudit_sort_by_source_role const int  direction  ) 
 

Instruct a model to sort AVC messages by source context's role, alphabetically.

Non-AVC messages will be placed below AVC ones.

Parameters:
direction Direction to sort. Non-negative for ascending, negative for descending.
Returns:
Sort object for this criterion, or NULL upon error. The caller is responsible for calling seaudit_sort_destroy() afterwards.

Definition at line 224 of file sort.c.

References seaudit_sort_t, sort_create(), sort_source_role_comp(), and sort_source_role_support().

00225 {
00226         return sort_create("source_role", sort_source_role_comp, sort_source_role_support, direction);
00227 }

int sort_source_type_comp const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t a,
const seaudit_message_t b
[static]
 

Definition at line 229 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_message_t, seaudit_sort_t, and seaudit_avc_message::stype.

Referenced by seaudit_sort_by_source_type().

00231 {
00232         return strcmp(a->data.avc->stype, b->data.avc->stype);
00233 }

int sort_source_type_support const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t msg
[static]
 

Definition at line 235 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_message_t, SEAUDIT_MESSAGE_TYPE_AVC, seaudit_sort_t, seaudit_avc_message::stype, and seaudit_message::type.

Referenced by seaudit_sort_by_source_type().

00236 {
00237         return msg->type == SEAUDIT_MESSAGE_TYPE_AVC && msg->data.avc->stype != NULL;
00238 }

seaudit_sort_t* seaudit_sort_by_source_type const int  direction  ) 
 

Instruct a model to sort AVC messages by source context's type, alphabetically.

Non-AVC messages will be placed below AVC ones.

Parameters:
direction Direction to sort. Non-negative for ascending, negative for descending.
Returns:
Sort object for this criterion, or NULL upon error. The caller is responsible for calling seaudit_sort_destroy() afterwards.

Definition at line 240 of file sort.c.

References seaudit_sort_t, sort_create(), sort_source_type_comp(), and sort_source_type_support().

00241 {
00242         return sort_create("source_type", sort_source_type_comp, sort_source_type_support, direction);
00243 }

int sort_target_user_comp const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t a,
const seaudit_message_t b
[static]
 

Definition at line 245 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_message_t, seaudit_sort_t, and seaudit_avc_message::tuser.

Referenced by seaudit_sort_by_target_user().

00247 {
00248         return strcmp(a->data.avc->tuser, b->data.avc->tuser);
00249 }

int sort_target_user_support const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t msg
[static]
 

Definition at line 251 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_message_t, SEAUDIT_MESSAGE_TYPE_AVC, seaudit_sort_t, seaudit_avc_message::tuser, and seaudit_message::type.

Referenced by seaudit_sort_by_target_user().

00252 {
00253         return msg->type == SEAUDIT_MESSAGE_TYPE_AVC && msg->data.avc->tuser != NULL;
00254 }

seaudit_sort_t* seaudit_sort_by_target_user const int  direction  ) 
 

Instruct a model to sort AVC messages by target context's user, alphabetically.

Non-AVC messages will be placed below AVC ones.

Parameters:
direction Direction to sort. Non-negative for ascending, negative for descending.
Returns:
Sort object for this criterion, or NULL upon error. The caller is responsible for calling seaudit_sort_destroy() afterwards.

Definition at line 256 of file sort.c.

References seaudit_sort_t, sort_create(), sort_target_user_comp(), and sort_target_user_support().

00257 {
00258         return sort_create("target_user", sort_target_user_comp, sort_target_user_support, direction);
00259 }

int sort_target_role_comp const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t a,
const seaudit_message_t b
[static]
 

Definition at line 261 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_message_t, seaudit_sort_t, and seaudit_avc_message::trole.

Referenced by seaudit_sort_by_target_role().

00263 {
00264         return strcmp(a->data.avc->trole, b->data.avc->trole);
00265 }

int sort_target_role_support const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t msg
[static]
 

Definition at line 267 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_message_t, SEAUDIT_MESSAGE_TYPE_AVC, seaudit_sort_t, seaudit_avc_message::trole, and seaudit_message::type.

Referenced by seaudit_sort_by_target_role().

00268 {
00269         return msg->type == SEAUDIT_MESSAGE_TYPE_AVC && msg->data.avc->trole != NULL;
00270 }

seaudit_sort_t* seaudit_sort_by_target_role const int  direction  ) 
 

Instruct a model to sort AVC messages by target context's role, alphabetically.

Non-AVC messages will be placed below AVC ones.

Parameters:
direction Direction to sort. Non-negative for ascending, negative for descending.
Returns:
Sort object for this criterion, or NULL upon error. The caller is responsible for calling seaudit_sort_destroy() afterwards.

Definition at line 272 of file sort.c.

References seaudit_sort_t, sort_create(), sort_target_role_comp(), and sort_target_role_support().

00273 {
00274         return sort_create("target_role", sort_target_role_comp, sort_target_role_support, direction);
00275 }

int sort_target_type_comp const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t a,
const seaudit_message_t b
[static]
 

Definition at line 277 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_message_t, seaudit_sort_t, and seaudit_avc_message::ttype.

Referenced by seaudit_sort_by_target_type().

00279 {
00280         return strcmp(a->data.avc->ttype, b->data.avc->ttype);
00281 }

int sort_target_type_support const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t msg
[static]
 

Definition at line 283 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_message_t, SEAUDIT_MESSAGE_TYPE_AVC, seaudit_sort_t, seaudit_avc_message::ttype, and seaudit_message::type.

Referenced by seaudit_sort_by_target_type().

00284 {
00285         return msg->type == SEAUDIT_MESSAGE_TYPE_AVC && msg->data.avc->ttype != NULL;
00286 }

seaudit_sort_t* seaudit_sort_by_target_type const int  direction  ) 
 

Instruct a model to sort AVC messages by target context's type, alphabetically.

Non-AVC messages will be placed below AVC ones.

Parameters:
direction Direction to sort. Non-negative for ascending, negative for descending.
Returns:
Sort object for this criterion, or NULL upon error. The caller is responsible for calling seaudit_sort_destroy() afterwards.

Definition at line 288 of file sort.c.

References seaudit_sort_t, sort_create(), sort_target_type_comp(), and sort_target_type_support().

00289 {
00290         return sort_create("target_type", sort_target_type_comp, sort_target_type_support, direction);
00291 }

int sort_object_class_comp const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t a,
const seaudit_message_t b
[static]
 

Definition at line 293 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_message_t, seaudit_sort_t, and seaudit_avc_message::tclass.

Referenced by seaudit_sort_by_object_class().

00295 {
00296         return strcmp(a->data.avc->tclass, b->data.avc->tclass);
00297 }

int sort_object_class_support const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t msg
[static]
 

Definition at line 299 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_message_t, SEAUDIT_MESSAGE_TYPE_AVC, seaudit_sort_t, seaudit_avc_message::tclass, and seaudit_message::type.

Referenced by seaudit_sort_by_object_class().

00300 {
00301         return msg->type == SEAUDIT_MESSAGE_TYPE_AVC && msg->data.avc->tclass != NULL;
00302 }

seaudit_sort_t* seaudit_sort_by_object_class const int  direction  ) 
 

Instruct a model to sort AVC messages by object class, alphabetically.

Non-AVC messages will be placed below AVC ones.

Parameters:
direction Direction to sort. Non-negative for ascending, negative for descending.
Returns:
Sort object for this criterion, or NULL upon error. The caller is responsible for calling seaudit_sort_destroy() afterwards.

Definition at line 304 of file sort.c.

References seaudit_sort_t, sort_create(), sort_object_class_comp(), and sort_object_class_support().

00305 {
00306         return sort_create("object_class", sort_object_class_comp, sort_object_class_support, direction);
00307 }

int sort_executable_comp const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t a,
const seaudit_message_t b
[static]
 

Definition at line 309 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_avc_message::exe, seaudit_message_t, and seaudit_sort_t.

Referenced by seaudit_sort_by_executable().

00311 {
00312         return strcmp(a->data.avc->exe, b->data.avc->exe);
00313 }

int sort_executable_support const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t msg
[static]
 

Definition at line 315 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_avc_message::exe, seaudit_message_t, SEAUDIT_MESSAGE_TYPE_AVC, seaudit_sort_t, and seaudit_message::type.

Referenced by seaudit_sort_by_executable().

00316 {
00317         return msg->type == SEAUDIT_MESSAGE_TYPE_AVC && msg->data.avc->exe != NULL;
00318 }

seaudit_sort_t* seaudit_sort_by_executable const int  direction  ) 
 

Instruct a model to sort AVC messages by the executable, alphabetically.

Non-AVC messages will be placed below AVC ones.

Parameters:
direction Direction to sort. Non-negative for ascending, negative for descending.
Returns:
Sort object for this criterion, or NULL upon error. The caller is responsible for calling seaudit_sort_destroy() afterwards.

Definition at line 320 of file sort.c.

References seaudit_sort_t, sort_create(), sort_executable_comp(), and sort_executable_support().

00321 {
00322         return sort_create("executable", sort_executable_comp, sort_executable_support, direction);
00323 }

int sort_command_comp const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t a,
const seaudit_message_t b
[static]
 

Definition at line 325 of file sort.c.

References seaudit_message::avc, seaudit_avc_message::comm, seaudit_message::data, seaudit_message_t, and seaudit_sort_t.

Referenced by seaudit_sort_by_command().

00327 {
00328         return strcmp(a->data.avc->comm, b->data.avc->comm);
00329 }

int sort_command_support const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t msg
[static]
 

Definition at line 331 of file sort.c.

References seaudit_message::avc, seaudit_avc_message::comm, seaudit_message::data, seaudit_message_t, SEAUDIT_MESSAGE_TYPE_AVC, seaudit_sort_t, and seaudit_message::type.

Referenced by seaudit_sort_by_command().

00332 {
00333         return msg->type == SEAUDIT_MESSAGE_TYPE_AVC && msg->data.avc->comm != NULL;
00334 }

seaudit_sort_t* seaudit_sort_by_command const int  direction  ) 
 

Instruct a model to sort AVC messages by the command, alphabetically.

Non-AVC messages will be placed below AVC ones.

Parameters:
direction Direction to sort. Non-negative for ascending, negative for descending.
Returns:
Sort object for this criterion, or NULL upon error. The caller is responsible for calling seaudit_sort_destroy() afterwards.

Definition at line 336 of file sort.c.

References seaudit_sort_t, sort_command_comp(), sort_command_support(), and sort_create().

00337 {
00338         return sort_create("command", sort_command_comp, sort_command_support, direction);
00339 }

int sort_name_comp const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t a,
const seaudit_message_t b
[static]
 

Definition at line 341 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_avc_message::name, seaudit_message_t, and seaudit_sort_t.

Referenced by seaudit_sort_by_name().

00343 {
00344         return strcmp(a->data.avc->name, b->data.avc->name);
00345 }

int sort_name_support const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t msg
[static]
 

Definition at line 347 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_avc_message::name, seaudit_message_t, SEAUDIT_MESSAGE_TYPE_AVC, seaudit_sort_t, and seaudit_message::type.

Referenced by seaudit_sort_by_name().

00348 {
00349         return msg->type == SEAUDIT_MESSAGE_TYPE_AVC && msg->data.avc->name != NULL;
00350 }

seaudit_sort_t* seaudit_sort_by_name const int  direction  ) 
 

Instruct a model to sort AVC messages by the name, alphabetically.

Non-AVC messages will be placed below AVC ones.

Parameters:
direction Direction to sort. Non-negative for ascending, negative for descending.
Returns:
Sort object for this criterion, or NULL upon error. The caller is responsible for calling seaudit_sort_destroy() afterwards.

Definition at line 352 of file sort.c.

References seaudit_sort_t, sort_create(), sort_name_comp(), and sort_name_support().

00353 {
00354         return sort_create("name", sort_name_comp, sort_name_support, direction);
00355 }

int sort_path_comp const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t a,
const seaudit_message_t b
[static]
 

Definition at line 357 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_avc_message::path, seaudit_message_t, and seaudit_sort_t.

Referenced by seaudit_sort_by_path().

00359 {
00360         return strcmp(a->data.avc->path, b->data.avc->path);
00361 }

int sort_path_support const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t msg
[static]
 

Definition at line 363 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_avc_message::path, seaudit_message_t, SEAUDIT_MESSAGE_TYPE_AVC, seaudit_sort_t, and seaudit_message::type.

Referenced by seaudit_sort_by_path().

00364 {
00365         return msg->type == SEAUDIT_MESSAGE_TYPE_AVC && msg->data.avc->path != NULL;
00366 }

seaudit_sort_t* seaudit_sort_by_path const int  direction  ) 
 

Instruct a model to sort AVC messages by the path, alphabetically.

Non-AVC messages will be placed below AVC ones.

Parameters:
direction Direction to sort. Non-negative for ascending, negative for descending.
Returns:
Sort object for this criterion, or NULL upon error. The caller is responsible for calling seaudit_sort_destroy() afterwards.

Definition at line 368 of file sort.c.

References seaudit_sort_t, sort_create(), sort_path_comp(), and sort_path_support().

00369 {
00370         return sort_create("path", sort_path_comp, sort_path_support, direction);
00371 }

int sort_device_comp const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t a,
const seaudit_message_t b
[static]
 

Definition at line 373 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_avc_message::dev, seaudit_message_t, and seaudit_sort_t.

Referenced by seaudit_sort_by_device().

00375 {
00376         return strcmp(a->data.avc->dev, b->data.avc->dev);
00377 }

int sort_device_support const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t msg
[static]
 

Definition at line 379 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_avc_message::dev, seaudit_message_t, SEAUDIT_MESSAGE_TYPE_AVC, seaudit_sort_t, and seaudit_message::type.

Referenced by seaudit_sort_by_device().

00380 {
00381         return msg->type == SEAUDIT_MESSAGE_TYPE_AVC && msg->data.avc->dev != NULL;
00382 }

seaudit_sort_t* seaudit_sort_by_device const int  direction  ) 
 

Instruct a model to sort AVC messages by the device, alphabetically.

Non-AVC messages will be placed below AVC ones.

Parameters:
direction Direction to sort. Non-negative for ascending, negative for descending.
Returns:
Sort object for this criterion, or NULL upon error. The caller is responsible for calling seaudit_sort_destroy() afterwards.

Definition at line 384 of file sort.c.

References seaudit_sort_t, sort_create(), sort_device_comp(), and sort_device_support().

00385 {
00386         return sort_create("device", sort_device_comp, sort_device_support, direction);
00387 }

int sort_inode_comp const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t a,
const seaudit_message_t b
[static]
 

Definition at line 389 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_avc_message::inode, seaudit_message_t, and seaudit_sort_t.

Referenced by seaudit_sort_by_inode().

00391 {
00392         /* need this logic because inodes are unsigned, so subtraction
00393          * could overflow */
00394         if (a->data.avc->inode < b->data.avc->inode) {
00395                 return -1;
00396         }
00397         return a->data.avc->inode - b->data.avc->inode;
00398 }

int sort_inode_support const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t msg
[static]
 

Definition at line 400 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_avc_message::inode, seaudit_message_t, SEAUDIT_MESSAGE_TYPE_AVC, seaudit_sort_t, and seaudit_message::type.

Referenced by seaudit_sort_by_inode().

00401 {
00402         return msg->type == SEAUDIT_MESSAGE_TYPE_AVC && msg->data.avc->inode > 0;
00403 }

seaudit_sort_t* seaudit_sort_by_inode const int  direction  ) 
 

Instruct a model to sort AVC messages by the object's inode.

Non-AVC messages will be placed below AVC ones.

Parameters:
direction Direction to sort. Non-negative for ascending, negative for descending.
Returns:
Sort object for this criterion, or NULL upon error. The caller is responsible for calling seaudit_sort_destroy() afterwards.

Definition at line 405 of file sort.c.

References seaudit_sort_t, sort_create(), sort_inode_comp(), and sort_inode_support().

00406 {
00407         return sort_create("inode", sort_inode_comp, sort_inode_support, direction);
00408 }

int sort_pid_comp const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t a,
const seaudit_message_t b
[static]
 

Definition at line 410 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_avc_message::pid, seaudit_message_t, and seaudit_sort_t.

Referenced by seaudit_sort_by_pid().

00412 {
00413         /* need this logic because pids are unsigned, so subtraction
00414          * could overflow */
00415         if (a->data.avc->pid < b->data.avc->pid) {
00416                 return -1;
00417         }
00418         return a->data.avc->pid - b->data.avc->pid;
00419 }

int sort_pid_support const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t msg
[static]
 

Definition at line 421 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_avc_message::pid, seaudit_message_t, SEAUDIT_MESSAGE_TYPE_AVC, seaudit_sort_t, and seaudit_message::type.

Referenced by seaudit_sort_by_pid().

00422 {
00423         return msg->type == SEAUDIT_MESSAGE_TYPE_AVC && msg->data.avc->pid > 0;
00424 }

seaudit_sort_t* seaudit_sort_by_pid const int  direction  ) 
 

Instruct a model to sort AVC messages by the process ID.

Non-AVC messages will be placed below AVC ones.

Parameters:
direction Direction to sort. Non-negative for ascending, negative for descending.
Returns:
Sort object for this criterion, or NULL upon error. The caller is responsible for calling seaudit_sort_destroy() afterwards.

Definition at line 426 of file sort.c.

References seaudit_sort_t, sort_create(), sort_pid_comp(), and sort_pid_support().

00427 {
00428         return sort_create("pid", sort_pid_comp, sort_pid_support, direction);
00429 }

int sort_port_comp const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t a,
const seaudit_message_t b
[static]
 

Definition at line 431 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_avc_message::port, seaudit_message_t, and seaudit_sort_t.

Referenced by seaudit_sort_by_port().

00433 {
00434         return a->data.avc->port - b->data.avc->port;
00435 }

int sort_port_support const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t msg
[static]
 

Definition at line 437 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_avc_message::port, seaudit_message_t, SEAUDIT_MESSAGE_TYPE_AVC, seaudit_sort_t, and seaudit_message::type.

Referenced by seaudit_sort_by_port().

00438 {
00439         return msg->type == SEAUDIT_MESSAGE_TYPE_AVC && msg->data.avc->port > 0;
00440 }

seaudit_sort_t* seaudit_sort_by_port const int  direction  ) 
 

Instruct a model to sort AVC messages by the port number.

Non-AVC messages will be placed below AVC ones.

Parameters:
direction Direction to sort. Non-negative for ascending, negative for descending.
Returns:
Sort object for this criterion, or NULL upon error. The caller is responsible for calling seaudit_sort_destroy() afterwards.

Definition at line 442 of file sort.c.

References seaudit_sort_t, sort_create(), sort_port_comp(), and sort_port_support().

00443 {
00444         return sort_create("port", sort_port_comp, sort_port_support, direction);
00445 }

int sort_laddr_comp const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t a,
const seaudit_message_t b
[static]
 

Definition at line 447 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_avc_message::laddr, seaudit_message_t, and seaudit_sort_t.

Referenced by seaudit_sort_by_laddr().

00449 {
00450         return strcmp(a->data.avc->laddr, b->data.avc->laddr);
00451 }

int sort_laddr_support const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t msg
[static]
 

Definition at line 453 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_avc_message::laddr, seaudit_message_t, SEAUDIT_MESSAGE_TYPE_AVC, seaudit_sort_t, and seaudit_message::type.

Referenced by seaudit_sort_by_laddr().

00454 {
00455         return msg->type == SEAUDIT_MESSAGE_TYPE_AVC && msg->data.avc->laddr != NULL;
00456 }

seaudit_sort_t* seaudit_sort_by_laddr const int  direction  ) 
 

Instruct a model to sort AVC messages by local address, alphabetically.

Non-AVC messages will be placed below AVC ones.

Parameters:
direction Direction to sort. Non-negative for ascending, negative for descending.
Returns:
Sort object for this criterion, or NULL upon error. The caller is responsible for calling seaudit_sort_destroy() afterwards.

Definition at line 458 of file sort.c.

References seaudit_sort_t, sort_create(), sort_laddr_comp(), and sort_laddr_support().

00459 {
00460         return sort_create("laddr", sort_laddr_comp, sort_laddr_support, direction);
00461 }

int sort_lport_comp const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t a,
const seaudit_message_t b
[static]
 

Definition at line 463 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_avc_message::lport, seaudit_message_t, and seaudit_sort_t.

Referenced by seaudit_sort_by_lport().

00465 {
00466         return a->data.avc->lport - b->data.avc->lport;
00467 }

int sort_lport_support const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t msg
[static]
 

Definition at line 469 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_avc_message::lport, seaudit_message_t, SEAUDIT_MESSAGE_TYPE_AVC, seaudit_sort_t, and seaudit_message::type.

Referenced by seaudit_sort_by_lport().

00470 {
00471         return msg->type == SEAUDIT_MESSAGE_TYPE_AVC && msg->data.avc->lport > 0;
00472 }

seaudit_sort_t* seaudit_sort_by_lport const int  direction  ) 
 

Instruct a model to sort AVC messages by the local port number.

Non-AVC messages will be placed below AVC ones.

Parameters:
direction Direction to sort. Non-negative for ascending, negative for descending.
Returns:
Sort object for this criterion, or NULL upon error. The caller is responsible for calling seaudit_sort_destroy() afterwards.

Definition at line 474 of file sort.c.

References seaudit_sort_t, sort_create(), sort_lport_comp(), and sort_lport_support().

00475 {
00476         return sort_create("lport", sort_lport_comp, sort_lport_support, direction);
00477 }

int sort_faddr_comp const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t a,
const seaudit_message_t b
[static]
 

Definition at line 479 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_avc_message::faddr, seaudit_message_t, and seaudit_sort_t.

Referenced by seaudit_sort_by_faddr().

00481 {
00482         return strcmp(a->data.avc->faddr, b->data.avc->faddr);
00483 }

int sort_faddr_support const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t msg
[static]
 

Definition at line 485 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_avc_message::faddr, seaudit_message_t, SEAUDIT_MESSAGE_TYPE_AVC, seaudit_sort_t, and seaudit_message::type.

Referenced by seaudit_sort_by_faddr().

00486 {
00487         return msg->type == SEAUDIT_MESSAGE_TYPE_AVC && msg->data.avc->faddr != NULL;
00488 }

seaudit_sort_t* seaudit_sort_by_faddr const int  direction  ) 
 

Instruct a model to sort AVC messages by foreign address, alphabetically.

Non-AVC messages will be placed below AVC ones.

Parameters:
direction Direction to sort. Non-negative for ascending, negative for descending.
Returns:
Sort object for this criterion, or NULL upon error. The caller is responsible for calling seaudit_sort_destroy() afterwards.

Definition at line 490 of file sort.c.

References seaudit_sort_t, sort_create(), sort_faddr_comp(), and sort_faddr_support().

00491 {
00492         return sort_create("faddr", sort_faddr_comp, sort_faddr_support, direction);
00493 }

int sort_fport_comp const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t a,
const seaudit_message_t b
[static]
 

Definition at line 495 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_avc_message::fport, seaudit_message_t, and seaudit_sort_t.

Referenced by seaudit_sort_by_fport().

00497 {
00498         return a->data.avc->fport - b->data.avc->fport;
00499 }

int sort_fport_support const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t msg
[static]
 

Definition at line 501 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_avc_message::fport, seaudit_message_t, SEAUDIT_MESSAGE_TYPE_AVC, seaudit_sort_t, and seaudit_message::type.

Referenced by seaudit_sort_by_fport().

00502 {
00503         return msg->type == SEAUDIT_MESSAGE_TYPE_AVC && msg->data.avc->fport > 0;
00504 }

seaudit_sort_t* seaudit_sort_by_fport const int  direction  ) 
 

Instruct a model to sort AVC messages by the foreign port number.

Non-AVC messages will be placed below AVC ones.

Parameters:
direction Direction to sort. Non-negative for ascending, negative for descending.
Returns:
Sort object for this criterion, or NULL upon error. The caller is responsible for calling seaudit_sort_destroy() afterwards.

Definition at line 506 of file sort.c.

References seaudit_sort_t, sort_create(), sort_fport_comp(), and sort_fport_support().

00507 {
00508         return sort_create("fport", sort_fport_comp, sort_fport_support, direction);
00509 }

int sort_saddr_comp const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t a,
const seaudit_message_t b
[static]
 

Definition at line 511 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_avc_message::saddr, seaudit_message_t, and seaudit_sort_t.

Referenced by seaudit_sort_by_saddr().

00513 {
00514         return strcmp(a->data.avc->saddr, b->data.avc->saddr);
00515 }

int sort_saddr_support const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t msg
[static]
 

Definition at line 517 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_avc_message::saddr, seaudit_message_t, SEAUDIT_MESSAGE_TYPE_AVC, seaudit_sort_t, and seaudit_message::type.

Referenced by seaudit_sort_by_saddr().

00518 {
00519         return msg->type == SEAUDIT_MESSAGE_TYPE_AVC && msg->data.avc->saddr != NULL;
00520 }

seaudit_sort_t* seaudit_sort_by_saddr const int  direction  ) 
 

Instruct a model to sort AVC messages by source address, alphabetically.

Non-AVC messages will be placed below AVC ones.

Parameters:
direction Direction to sort. Non-negative for ascending, negative for descending.
Returns:
Sort object for this criterion, or NULL upon error. The caller is responsible for calling seaudit_sort_destroy() afterwards.

Definition at line 522 of file sort.c.

References seaudit_sort_t, sort_create(), sort_saddr_comp(), and sort_saddr_support().

00523 {
00524         return sort_create("saddr", sort_saddr_comp, sort_saddr_support, direction);
00525 }

int sort_sport_comp const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t a,
const seaudit_message_t b
[static]
 

Definition at line 527 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_message_t, seaudit_sort_t, and seaudit_avc_message::source.

Referenced by seaudit_sort_by_sport().

00529 {
00530         return a->data.avc->source - b->data.avc->source;
00531 }

int sort_sport_support const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t msg
[static]
 

Definition at line 533 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_message_t, SEAUDIT_MESSAGE_TYPE_AVC, seaudit_sort_t, seaudit_avc_message::source, and seaudit_message::type.

Referenced by seaudit_sort_by_sport().

00534 {
00535         return msg->type == SEAUDIT_MESSAGE_TYPE_AVC && msg->data.avc->source > 0;
00536 }

seaudit_sort_t* seaudit_sort_by_sport const int  direction  ) 
 

Instruct a model to sort AVC messages by the source port number.

Non-AVC messages will be placed below AVC ones.

Parameters:
direction Direction to sort. Non-negative for ascending, negative for descending.
Returns:
Sort object for this criterion, or NULL upon error. The caller is responsible for calling seaudit_sort_destroy() afterwards.

Definition at line 538 of file sort.c.

References seaudit_sort_t, sort_create(), sort_sport_comp(), and sort_sport_support().

00539 {
00540         return sort_create("sport", sort_sport_comp, sort_sport_support, direction);
00541 }

int sort_daddr_comp const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t a,
const seaudit_message_t b
[static]
 

Definition at line 543 of file sort.c.

References seaudit_message::avc, seaudit_avc_message::daddr, seaudit_message::data, seaudit_message_t, and seaudit_sort_t.

Referenced by seaudit_sort_by_daddr().

00545 {
00546         return strcmp(a->data.avc->daddr, b->data.avc->daddr);
00547 }

int sort_daddr_support const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t msg
[static]
 

Definition at line 549 of file sort.c.

References seaudit_message::avc, seaudit_avc_message::daddr, seaudit_message::data, seaudit_message_t, SEAUDIT_MESSAGE_TYPE_AVC, seaudit_sort_t, and seaudit_message::type.

Referenced by seaudit_sort_by_daddr().

00550 {
00551         return msg->type == SEAUDIT_MESSAGE_TYPE_AVC && msg->data.avc->daddr != NULL;
00552 }

seaudit_sort_t* seaudit_sort_by_daddr const int  direction  ) 
 

Instruct a model to sort AVC messages by destination address, alphabetically.

Non-AVC messages will be placed below AVC ones.

Parameters:
direction Direction to sort. Non-negative for ascending, negative for descending.
Returns:
Sort object for this criterion, or NULL upon error. The caller is responsible for calling seaudit_sort_destroy() afterwards.

Definition at line 554 of file sort.c.

References seaudit_sort_t, sort_create(), sort_daddr_comp(), and sort_daddr_support().

00555 {
00556         return sort_create("daddr", sort_daddr_comp, sort_daddr_support, direction);
00557 }

int sort_dport_comp const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t a,
const seaudit_message_t b
[static]
 

Definition at line 559 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_avc_message::dest, seaudit_message_t, and seaudit_sort_t.

Referenced by seaudit_sort_by_dport().

00561 {
00562         return a->data.avc->dest - b->data.avc->dest;
00563 }

int sort_dport_support const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t msg
[static]
 

Definition at line 565 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_avc_message::dest, seaudit_message_t, SEAUDIT_MESSAGE_TYPE_AVC, seaudit_sort_t, and seaudit_message::type.

Referenced by seaudit_sort_by_dport().

00566 {
00567         return msg->type == SEAUDIT_MESSAGE_TYPE_AVC && msg->data.avc->dest > 0;
00568 }

seaudit_sort_t* seaudit_sort_by_dport const int  direction  ) 
 

Instruct a model to sort AVC messages by the destination port number.

Non-AVC messages will be placed below AVC ones.

Parameters:
direction Direction to sort. Non-negative for ascending, negative for descending.
Returns:
Sort object for this criterion, or NULL upon error. The caller is responsible for calling seaudit_sort_destroy() afterwards.

Definition at line 570 of file sort.c.

References seaudit_sort_t, sort_create(), sort_dport_comp(), and sort_dport_support().

00571 {
00572         return sort_create("dport", sort_dport_comp, sort_dport_support, direction);
00573 }

int sort_key_comp const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t a,
const seaudit_message_t b
[static]
 

Definition at line 575 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_avc_message::key, seaudit_message_t, and seaudit_sort_t.

Referenced by seaudit_sort_by_key().

00577 {
00578         return a->data.avc->key - b->data.avc->key;
00579 }

int sort_key_support const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t msg
[static]
 

Definition at line 581 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_avc_message::is_key, seaudit_message_t, SEAUDIT_MESSAGE_TYPE_AVC, seaudit_sort_t, and seaudit_message::type.

Referenced by seaudit_sort_by_key().

00582 {
00583         return msg->type == SEAUDIT_MESSAGE_TYPE_AVC && msg->data.avc->is_key;
00584 }

seaudit_sort_t* seaudit_sort_by_key const int  direction  ) 
 

Instruct a model to sort AVC messages by the IPC call's key.

Non-AVC messages will be placed below AVC ones.

Parameters:
direction Direction to sort. Non-negative for ascending, negative for descending.
Returns:
Sort object for this criterion, or NULL upon error. The caller is responsible for calling seaudit_sort_destroy() afterwards.

Definition at line 586 of file sort.c.

References seaudit_sort_t, sort_create(), sort_key_comp(), and sort_key_support().

00587 {
00588         return sort_create("key", sort_key_comp, sort_key_support, direction);
00589 }

int sort_cap_comp const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t a,
const seaudit_message_t b
[static]
 

Definition at line 591 of file sort.c.

References seaudit_message::avc, seaudit_avc_message::capability, seaudit_message::data, seaudit_message_t, and seaudit_sort_t.

Referenced by seaudit_sort_by_cap().

00593 {
00594         return a->data.avc->capability - b->data.avc->capability;
00595 }

int sort_cap_support const seaudit_sort_t *sort   __attribute__((unused)),
const seaudit_message_t msg
[static]
 

Definition at line 597 of file sort.c.

References seaudit_message::avc, seaudit_message::data, seaudit_avc_message::is_capability, seaudit_message_t, SEAUDIT_MESSAGE_TYPE_AVC, seaudit_sort_t, and seaudit_message::type.

Referenced by seaudit_sort_by_cap().

00598 {
00599         return msg->type == SEAUDIT_MESSAGE_TYPE_AVC && msg->data.avc->is_capability;
00600 }

seaudit_sort_t* seaudit_sort_by_cap const int  direction  ) 
 

Instruct a model to sort AVC messages by the process capability value.

Non-AVC messages will be placed below AVC ones.

Parameters:
direction Direction to sort. Non-negative for ascending, negative for descending.
Returns:
Sort object for this criterion, or NULL upon error. The caller is responsible for calling seaudit_sort_destroy() afterwards.

Definition at line 602 of file sort.c.

References seaudit_sort_t, sort_cap_comp(), sort_cap_support(), and sort_create().

00603 {
00604         return sort_create("cap", sort_cap_comp, sort_cap_support, direction);
00605 }

seaudit_sort_t* sort_create_from_name const char *  name,
int  direction
 

Create and return a new sort object based upon the name of the sort (as returned by sort_get_name()).

The new sort object will not be attached to any models.

Parameters:
name Name of the type of sort to create.
direction Direction to sort, non-negative for ascending, negative for descending.
Returns:
A new sort object, or NULL upon error. The caller is responsible for calling seaudit_sort_destroy() afterwards.

Definition at line 648 of file sort.c.

References sort_name_map::create_fn, create_map, sort_name_map::name, and seaudit_sort_t.

00649 {
00650         size_t i;
00651         for (i = 0; create_map[i].name != NULL; i++) {
00652                 if (strcmp(create_map[i].name, name) == 0) {
00653                         return create_map[i].create_fn(direction);
00654                 }
00655         }
00656         errno = EINVAL;
00657         return NULL;
00658 }

int sort_is_supported const seaudit_sort_t sort,
const seaudit_message_t msg
 

Given a sort object and a message, return non-zero if this sort object could operate on the message, 0 if not.

(Messages may have incomplete information due to parser warnings.)

Parameters:
sort Sort object to query.
msg Message to check.
Returns:
Non-zero if sort supports the message, 0 if not.

Definition at line 660 of file sort.c.

References seaudit_message_t, seaudit_sort_t, and seaudit_sort::support.

Referenced by message_comp(), and model_sort().

00661 {
00662         return sort->support(sort, msg);
00663 }

int sort_comp const seaudit_sort_t sort,
const seaudit_message_t a,
const seaudit_message_t b
 

Invoke a sort object's comparison function.

Parameters:
sort Sort object that contains a comparator.
m1 First message to compare.
m2 Second message to compare.
Returns:
0 if the messages are equivalent, < 0 if a is first, > 0 if b is first.

Definition at line 665 of file sort.c.

References seaudit_sort::comp, seaudit_sort::direction, seaudit_message_t, and seaudit_sort_t.

Referenced by message_comp().

00666 {
00667         int retval = sort->comp(sort, a, b);
00668         return (sort->direction >= 0 ? retval : -1 * retval);
00669 }

const char* sort_get_name const seaudit_sort_t sort  ) 
 

Return the type of sort this sort object is.

The name is valid for sort_create_from_name()'s first parameter.

Parameters:
sort Sort object to query.
Returns:
Type of sort this object is.

Definition at line 671 of file sort.c.

References seaudit_sort::name, and seaudit_sort_t.

00672 {
00673         return sort->name;
00674 }

int sort_get_direction const seaudit_sort_t sort  ) 
 

Return the sort direction for a sort object.

Parameters:
sort Sort object to query.
Returns:
Non-negative for ascending, negative for descending.

Definition at line 676 of file sort.c.

References seaudit_sort::direction, and seaudit_sort_t.

00677 {
00678         return sort->direction;
00679 }


Variable Documentation

const struct sort_name_map create_map[] [static]
 

Definition at line 615 of file sort.c.

Referenced by sort_create_from_name().