2013-12-03 02:30:19 +04:00
/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
# pragma once
/***
This file is part of systemd .
Copyright 2013 Lennart Poettering
systemd 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 .
systemd 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 systemd ; If not , see < http : //www.gnu.org/licenses/>.
* * */
typedef struct BusName BusName ;
2014-03-07 01:42:42 +04:00
typedef struct BusNamePolicy BusNamePolicy ;
2013-12-03 02:30:19 +04:00
# include "unit.h"
typedef enum BusNameState {
BUSNAME_DEAD ,
2014-03-17 14:41:21 +04:00
BUSNAME_REGISTERED ,
2013-12-03 02:30:19 +04:00
BUSNAME_LISTENING ,
BUSNAME_RUNNING ,
BUSNAME_FAILED ,
_BUSNAME_STATE_MAX ,
_BUSNAME_STATE_INVALID = - 1
} BusNameState ;
typedef enum BusNameResult {
BUSNAME_SUCCESS ,
BUSNAME_FAILURE_RESOURCES ,
BUSNAME_FAILURE_SERVICE_FAILED_PERMANENT ,
_BUSNAME_RESULT_MAX ,
_BUSNAME_RESULT_INVALID = - 1
} BusNameResult ;
struct BusName {
Unit meta ;
char * name ;
int starter_fd ;
2014-03-19 19:19:06 +04:00
2014-03-17 14:41:21 +04:00
bool activating ;
2014-03-19 19:19:06 +04:00
bool accept_fd ;
2013-12-03 02:30:19 +04:00
UnitRef service ;
BusNameState state , deserialized_state ;
BusNameResult result ;
sd_event_source * event_source ;
2014-03-07 01:42:42 +04:00
LIST_HEAD ( BusNamePolicy , policy ) ;
} ;
typedef enum BusNamePolicyType {
BUSNAME_POLICY_TYPE_USER ,
BUSNAME_POLICY_TYPE_GROUP ,
BUSNAME_POLICY_TYPE_WORLD ,
_BUSNAME_POLICY_TYPE_MAX ,
_BUSNAME_POLICY_TYPE_INVALID = - 1
} BusNamePolicyType ;
typedef enum BusNamePolicyAccess {
BUSNAME_POLICY_ACCESS_SEE ,
BUSNAME_POLICY_ACCESS_TALK ,
BUSNAME_POLICY_ACCESS_OWN ,
_BUSNAME_POLICY_ACCESS_MAX ,
_BUSNAME_POLICY_ACCESS_INVALID = - 1
} BusNamePolicyAccess ;
struct BusNamePolicy {
BusNamePolicyType type ;
BusNamePolicyAccess access ;
union {
uid_t uid ;
gid_t gid ;
} ;
LIST_FIELDS ( BusNamePolicy , policy ) ;
2013-12-03 02:30:19 +04:00
} ;
extern const UnitVTable busname_vtable ;
const char * busname_state_to_string ( BusNameState i ) _const_ ;
BusNameState busname_state_from_string ( const char * s ) _pure_ ;
const char * busname_result_to_string ( BusNameResult i ) _const_ ;
BusNameResult busname_result_from_string ( const char * s ) _pure_ ;
2014-03-07 01:42:42 +04:00
const char * busname_policy_access_to_string ( BusNamePolicyAccess i ) _const_ ;
BusNamePolicyAccess busname_policy_access_from_string ( const char * s ) _pure_ ;