crossroads

Git mirror of https://crossroads.e-tunity.com/
git clone git://git.finwo.net/app/crossroads
Log | Files | Refs

tellservice.c (1361B)


      1 /*************************************************************************
      2  * This file is part of Crosroads 1.23, a load balancer and fail over
      3  * utility for TCP. Copyright (c) Karel Kubat, distributed under GPL.
      4  * Visit http://crossroads.e-tunity.com for information.
      5  *************************************************************************/
      6 #include "crossroads.h"
      7 
      8 int tell_service (int ac, char **av) {
      9     Service *target_service = 0;
     10     int target_backend = -1, i;
     11     Backendavail avail;
     12     
     13 
     14     for (i = 0; i < nservice; i++)
     15 	if (!strcasecmp (service[i].name, av[0])) {
     16 	    target_service = service + i;
     17 	    break;
     18 	}
     19     if (!target_service)
     20 	error ("Service '%s' isn't known. "
     21 	       "Maybe the configuration has changed?", av[0]);
     22 
     23     for (i = 0; i < target_service->nbackend; i++)
     24 	if (!strcasecmp (target_service->backend[i].name, av[1])) {
     25 	    target_backend = i;
     26 	    break;
     27 	}
     28     if (target_backend == -1)
     29 	error ("Backend '%s' of service '%s' isn't known. "
     30 	       "Maybe the configuration has changed?", av[1], av[0]);
     31 
     32     if ( (avail = string_to_state (av[2])) == st_unknown )
     33 	error ("Incorrect state '%s'.", av[2]);
     34 
     35     alloc_reporter (target_service, 0);
     36     servicereport->backendstate[target_backend].avail = avail;
     37     msg ("Marked backend %s of service %s as %s.",
     38 	 av[1], av[0], av[2]);
     39     return (1);
     40 }
     41