mirror of
				https://git.proxmox.com/git/mirror_frr
				synced 2025-11-04 15:30:26 +00:00 
			
		
		
		
	The FSF's address changed, and we had a mixture of comment styles for the GPL file header. (The style with * at the beginning won out with 580 to 141 in existing files.) Note: I've intentionally left intact other "variations" of the copyright header, e.g. whether it says "Zebra", "Quagga", "FRR", or nothing. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
		
			
				
	
	
		
			90 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* 
 | 
						|
 * Zebra privileges header.
 | 
						|
 *
 | 
						|
 * Copyright (C) 2003 Paul Jakma.
 | 
						|
 *
 | 
						|
 * This file is part of GNU Zebra.
 | 
						|
 *
 | 
						|
 * GNU Zebra is free software; you can redistribute it and/or modify it
 | 
						|
 * under the terms of the GNU General Public License as published by the
 | 
						|
 * Free Software Foundation; either version 2, or (at your option) any
 | 
						|
 * later version.
 | 
						|
 *
 | 
						|
 * GNU Zebra 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
 | 
						|
 * General Public License for more details.
 | 
						|
 *
 | 
						|
 * You should have received a copy of the GNU General Public License along
 | 
						|
 * with this program; see the file COPYING; if not, write to the Free Software
 | 
						|
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 | 
						|
 */
 | 
						|
 | 
						|
#ifndef _ZEBRA_PRIVS_H
 | 
						|
#define _ZEBRA_PRIVS_H
 | 
						|
 | 
						|
/* list of zebra capabilities */
 | 
						|
typedef enum 
 | 
						|
{
 | 
						|
  ZCAP_SETID,
 | 
						|
  ZCAP_BIND,
 | 
						|
  ZCAP_NET_ADMIN,
 | 
						|
  ZCAP_SYS_ADMIN,
 | 
						|
  ZCAP_NET_RAW,
 | 
						|
  ZCAP_CHROOT,
 | 
						|
  ZCAP_NICE,
 | 
						|
  ZCAP_PTRACE,
 | 
						|
  ZCAP_DAC_OVERRIDE,
 | 
						|
  ZCAP_READ_SEARCH,
 | 
						|
  ZCAP_FOWNER,
 | 
						|
  ZCAP_MAX
 | 
						|
} zebra_capabilities_t;
 | 
						|
 | 
						|
typedef enum
 | 
						|
{
 | 
						|
  ZPRIVS_LOWERED,
 | 
						|
  ZPRIVS_RAISED,
 | 
						|
  ZPRIVS_UNKNOWN,
 | 
						|
} zebra_privs_current_t;
 | 
						|
 | 
						|
typedef enum
 | 
						|
{
 | 
						|
  ZPRIVS_RAISE,
 | 
						|
  ZPRIVS_LOWER,
 | 
						|
} zebra_privs_ops_t;
 | 
						|
 | 
						|
struct zebra_privs_t
 | 
						|
{
 | 
						|
  zebra_capabilities_t *caps_p;       /* caps required for operation */
 | 
						|
  zebra_capabilities_t *caps_i;       /* caps to allow inheritance of */
 | 
						|
  int cap_num_p;                      /* number of caps in arrays */
 | 
						|
  int cap_num_i;                    
 | 
						|
  const char *user;                   /* user and group to run as */
 | 
						|
  const char *group;
 | 
						|
  const char *vty_group;              /* group to chown vty socket to */
 | 
						|
  /* methods */
 | 
						|
  int 
 | 
						|
    (*change) (zebra_privs_ops_t);    /* change privileges, 0 on success */
 | 
						|
  zebra_privs_current_t 
 | 
						|
    (*current_state) (void);          /* current privilege state */
 | 
						|
};
 | 
						|
 | 
						|
struct zprivs_ids_t
 | 
						|
{
 | 
						|
  /* -1 is undefined */
 | 
						|
  uid_t uid_priv;                     /* privileged uid */
 | 
						|
  uid_t uid_normal;                   /* normal uid */
 | 
						|
  gid_t gid_priv;                     /* privileged uid */
 | 
						|
  gid_t gid_normal;                   /* normal uid */
 | 
						|
  gid_t gid_vty;                      /* vty gid */
 | 
						|
};
 | 
						|
 | 
						|
  /* initialise zebra privileges */
 | 
						|
extern void zprivs_init (struct zebra_privs_t *zprivs);
 | 
						|
  /* drop all and terminate privileges */ 
 | 
						|
extern void zprivs_terminate (struct zebra_privs_t *);
 | 
						|
  /* query for runtime uid's and gid's, eg vty needs this */
 | 
						|
extern void zprivs_get_ids(struct zprivs_ids_t *);
 | 
						|
 | 
						|
#endif /* _ZEBRA_PRIVS_H */
 |