Start


Questo modulo contiene :


Codice

/* 
  start.h
          */
#include <sys/socket.h>
#include <sys/un.h>
#include <netinet/in.h>
#include <netdb.h>
#include <fcntl.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/time.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <sys/shm.h> 
#include <signal.h>
#include <errno.h>
#include <stdio.h>
#include <time.h>
#include <sys/wait.h>
#define BUFLEN 60    /*dimensione del msg inviato dal st per registrarsi*/
#define BUFFERLEN 20
#define REFLEX 3    
#define CALDO  2
#define FREDDO 1
#define PORTA_MNTR  20000      /*porta di mirror dei NS*/
#define PORTA_RPLS  20001      /*porta di ricezione al Bcast di elezione*/
#define PORTA_BCAST_EL 30000   /*porta Bcast del protocollo di elezione*/ 
#define PORTA_BCAST_NS 31000   /*porta Bcast di ricerca dei NS attivi*/
#define PORTA_DG_CL 32200      /*porta di servizio CLIENT del NS HOT*/
#define PORTA_LS_ST 32100      /*porta di servizio SERVER del NS HOT*/
#define PORTA_TERM  25000      /*porta di servizio TERMINALE del NS HOT-COLD*/
#define PORTA_TERM_RPLS  26000 /*porta di acq. risp. al bcast di TERMINALE*/
#define SHMKEY_TAB_TERM ((key_t) 7000) /*chiave per la shmem del terminale*/
#define SHMKEY_TAB_NS ((key_t) 7001)   /*chiave per la shmem del NS HOT*/
#define SHMKEY_TAB_COLD ((key_t) 7002) /*chiave per la shmem del NS COLD*/
#define SHMKEY_INDEX ((key_t) 7003)    /*chiave per la shmem per index*/
#define SEMKEY ((key_t) 8004)          /*chiave per la struttura dei semafori*/
#define PERM 0666
static struct sembuf lock_ns[2]=
  {
    {0,0,0},       /*si aspetta che si sblocchi il semaforo*/
    {0,1,SEM_UNDO} /*si  blocca il semaforo*/
  };
static struct sembuf unlock_ns[1]=
  {
    {0,-1,SEM_UNDO} /*si sblocca il semaforo */
  };
static struct sembuf lock_cold[2]=
  {
    {1,0,0},       /*si aspetta che si sblocchi il semaforo*/
    {1,1,SEM_UNDO} /*si  blocca il semaforo*/
  };
static struct sembuf unlock_cold[1]=
  {
    {1,-1,SEM_UNDO} /*si sblocca il semaforo */
  };
typedef struct {
               unsigned short  stato;
               char host[24];
               char porta_cl[10];
               char porta_ud[10];
               char porta_res[10];
               unsigned short porta_ka;
               } TUPLA;
TUPLA (*ptr_tab_hot)[2],(*ptr_tab_cold)[2],(*ptr_tab_term)[2];
typedef struct {
               unsigned short  stato_NS;
               char host_NS[24];
               unsigned short porta_mntr;
               unsigned short porta_replies;
               time_t tempo;
               } MSG_EL;
typedef struct {
               unsigned short stato;
               unsigned short porta_ka;              
               } MSG_PROBE;
typedef struct {
               unsigned short porta_dg_cl;
               unsigned short porta_ls_st; 
               } MSG_NS;
int * ptr_index,len=sizeof(struct sockaddr_in);
/*dichiarazione delle variabili e funzioni definite in altri moduli*/
extern int errno;
extern void demone(void);
extern int make_socket(struct sockaddr_in*,int*,ushort,char,FILE*);
extern int connections(struct sockaddr_in*,int*,char*,ushort,char,FILE*);
extern void clear_screen(void);
extern void put_into(MSG_EL*,MSG_EL*);