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