pt.h
f51155cf
 /*
  * $Id$
  *
  * Process Table
  *
  *
7dd0b342
  *
  * Copyright (C) 2001-2003 Fhg Fokus
  *
  * This file is part of ser, a free SIP server.
  *
  * ser 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 of the License, or
  * (at your option) any later version
  *
  * For a license to use the ser software under conditions
  * other than those described here, or to purchase support for this
  * software, please contact iptel.org by e-mail at the following addresses:
  *    info@iptel.org
  *
  * ser 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; if not, write to the Free Software 
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
f51155cf
  */
5dcfb23d
 /*
  * History:
  * --------
  *  2003-04-15  added tcp_disable support (andrei)
  */
f51155cf
 
7dd0b342
 
f51155cf
 #ifndef _PT_H
015f149a
 #define _PT_H
f51155cf
 
 #include <sys/types.h>
 #include <unistd.h>
 
 #include "globals.h"
 #include "timer.h"
9f4c52ce
 #include "socket_info.h"
f51155cf
 
 #define MAX_PT_DESC	128
 
 struct process_table {
 	int pid;
0c5da34b
 #ifdef USE_TCP
 	int unix_sock; /* unix socket on which tcp main listens */
 	int idx; /* tcp child index, -1 for other processes */
 #endif
f51155cf
 	char desc[MAX_PT_DESC];
 };
 
 extern struct process_table *pt;
 extern int process_no;
 
 /* get number of process started by main with
    given configuration
 */
 inline static int process_count()
 {
9f4c52ce
 	int udp_listeners;
 	struct socket_info* si;
 	
 	for (si=udp_listen, udp_listeners=0; si; si=si->next, udp_listeners++);
f51155cf
     return 
 		/* receivers and attendant */
9f4c52ce
 		(dont_fork ? 1 : children_no*udp_listeners + 1)
f51155cf
 		/* timer process */
 		+ (timer_list ? 1 : 0 )
 		/* fifo server */
6ee62314
 		+((fifo==NULL || strlen(fifo)==0) ? 0 : 1 )
88647791
 		/* unixsock server*/
 		+(unixsock_name?unixsock_children:0)
6ee62314
 #ifdef USE_TCP
200c0276
 		+((!tcp_disable)?( 1/* tcp main */ + tcp_children_no + 
 							(timer_list ? 0: 1)):0) /* add the timer proc.
5dcfb23d
 													  if not already taken
 													  into account */
6ee62314
 #endif
 		
 		;
f51155cf
 }
 
 
 /* retun processes's pid */
 inline static int my_pid()
 {
 	return pt ? pt[process_no].pid : getpid();
 }
 
 
 #endif