Login
[x]
Log in using an account from:
Fedora Account System
Red Hat Associate
Red Hat Customer
Or login using a Red Hat Bugzilla account
Forgot Password
Login:
Hide Forgot
Create an Account
Red Hat Bugzilla – Attachment 267301 Details for
Bug 396241
Support for Real Server's remote port
[?]
New
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
|
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh83 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
This site requires JavaScript to be enabled to function correctly, please enable it.
[patch]
Brenton's patch to piranha for lvs.cf "port" option
piranha_remote_port_patch.txt (text/plain), 19.68 KB, created by
Nuno Tavares
on 2007-11-23 02:49:26 UTC
(
hide
)
Description:
Brenton's patch to piranha for lvs.cf "port" option
Filename:
MIME Type:
Creator:
Nuno Tavares
Created:
2007-11-23 02:49:26 UTC
Size:
19.68 KB
patch
obsolete
>diff -uNr piranha-0.8.2-orig/lvsconfig.c piranha/lvsconfig.c >--- piranha-0.8.2-orig/lvsconfig.c 2006-01-12 15:54:59.000000000 -0600 >+++ piranha/lvsconfig.c 2006-10-10 08:18:01.000000000 -0500 >@@ -736,7 +736,9 @@ > OUTPUT_MISSING_NUM (LVS_SAW_AS_ISACTIVE, eservice->isActive, > -1, (char *) "\t\tactive = %d\n") > OUTPUT_MISSING_NUM (LVS_SAW_AS_WEIGHT, eservice->weight, >- 1, (char *) "\t\tweight = %d\n")} >+ 1, (char *) "\t\tweight = %d\n") >+ OUTPUT_MISSING_NUM (LVS_SAW_AS_PORT, eservice->port, >+ 1, (char *) "\t\tport = %d\n")} > >@@ -782,6 +784,13 @@ > > OUTPUT_NUM (eservice, weight, 2, LVS_SAW_AS_WEIGHT); > >} > >+ else if (TOKEN ("port")) >+ { >+ CHECK_ARGS (1) if ((rc = getNum (&service->port, toks.argv[2]))) >+ return rc; >+ OUTPUT_NUM (eservice, port, 2, LVS_SAW_AS_PORT); >+ >+ } > else > return LVS_ERROR_BADCOMMAND; > >diff -uNr piranha-0.8.2-orig/lvsd.c piranha/lvsd.c > >--- piranha-0.8.2-orig/lvsd.c 2006-03-03 12:50:49.000000000 -0600 >+++ piranha/lvsd.c 2006-10-10 08:18:01.000000000 -0500 >@@ -131,7 +131,7 @@ > { > struct in_addr vip; > struct in_addr address; >- int port, protocol; >+ int port, rport, protocol; > pid_t clientMonitor; /* -1 if died */ > }; > >@@ -303,7 +303,7 @@ > > char *virtAddress; > char *argv[42]; > char **arg = argv; >- char portNum[20], timeoutNum[20], weightNum[20], reentryNum[20]; >+ char portNum[20], rportNum[20], timeoutNum[20], weightNum[20], >reentryNum[20]; > char fwmNum[20]; > pid_t child; > >@@ -313,7 +313,8 @@ > > clientInfo.vip = vserver->virtualAddress; > clientInfo.address = service->address; > clientInfo.protocol = vserver->protocol; >- clientInfo.port = service->port; >+ clientInfo.port = vserver->port; >+ clientInfo.rport = service->port; > >rc = findClientInList (clients, *numClients, &clientInfo); @@ -323,7 +324,8 @@ > > virtAddress = strdup (inet_ntoa (vserver->virtualAddress)); > realAddress = strdup (inet_ntoa (service->address)); > >- sprintf (portNum, "%d", service->port); > >+ sprintf (portNum, "%d", vserver->port); >+ sprintf (rportNum, "%d", service->port); > sprintf (timeoutNum, "%d", vserver->timeout); > sprintf (weightNum, "%d", service->weight); > sprintf (reentryNum, "%d", vserver->reentryTime); >@@ -334,6 +336,8 @@ > *arg++ = realAddress; > *arg++ = (char *) "-p"; > *arg++ = portNum; >+ *arg++ = (char *) "-r"; >+ *arg++ = rportNum; > >if (vserver->fwmark) > > { >diff -uNr piranha-0.8.2-orig/nanny.8 piranha/nanny.8 >--- piranha-0.8.2-orig/nanny.8 2006-01-11 14:35:17.000000000 -0600 >+++ piranha/nanny.8 2006-10-10 08:18:01.000000000 -0500 >@@ -14,7 +14,7 @@ > .BI "[-M|--method=" ARG "] [-U|--loadcmd=" ARG "]" > .BI "[-n|--nodaemon] [-c|--nofork] [--test-start] [--norun]" > .BI "[-p|--port=" ARG "] [-a|--reentrytime=" ARG "] [-h|--server=" ARG "]" >-.BI "[-f|--fwmark=" ARG "]" >+.BI "[-f|--fwmark=" ARG "] [-r|--rport=" ARG "]" > .BI "[-v|--verbose] [-V|--virtaddress=" ARG "] [-w|--weight=" ARG "]" > .BI "[-S|--scale=" ARG "] [-s|--send_string=" ARG "]" > .BI "[-e|--send_program=" ARG "[-x|--expect_string=" ARG "]" >@@ -27,7 +27,7 @@ > .nf > .BI "nanny [-t|--interval=" ARG "] [-U|--loadcmd=" ARG "]" > .BI "[-n|--nodaemon] [-c|--nofork] [--test-start] [--norun]" >-.BI "[-p|--port=" ARG "] [-h|--server=" ARG "] [-v|--verbose]" >+.BI "[-p|--port=" ARG "] [-h|--server=" ARG "] [-r|--rport=" ARG "] [-v|--verbose]" > .BI "[-V|--virtaddress=" ARG "] [-s|--send_string=" ARG "]" > .BI "[-x|--expect_string=" ARG "] [-R|--startup=" ARG "]" > .BI "[-D|--shutdown=" ARG "] [-u|--UDP] [-T|--suppress] [-?|--help]" >@@ -82,7 +82,8 @@ > Same as "--test-start". > .TP > .BI "-p|--port= "ARG >-Port for nanny to monitor on real server to check for service availability. >+Port used on the virtual IP address of the service to be monitored (fos), or >+the port used on the address of the virtual service to be monitored (lvsd). > If omitted, port 80 (http) is assumed. > .TP > .BI "-a|--reentrytime= "ARG >@@ -108,6 +109,10 @@ > (lvsd). If this option is set, the \fI--virtaddress\fP option will be > ignored. > .TP >+.BI "-r|--rport= "ARG >+Port for nanny to monitor on the real server to check for service >+availability. If omitted, port 80 (http) is assumed. >+.TP > .BI "-V|--virtaddress= "ARG > This is the virtual IP address of the service to be monitored (fos), or > the address of the virtual service to be monitored (lvsd). >@@ -127,7 +132,10 @@ > file. > The special token %h is replaced with the IP of each of the defined > real servers and can be used more than once though it will carry the same >-IP of the defined real server that has been selected. >+IP of the defined real server that has been selected. The special >+token %p is replaced with the port of each of the defined real servers >+and can be used more than once though it too will carry the same >+port value of the defined real server that has been selected. > eg. 'ping -c1 %h' > .TP > .BI "-s|--send_str= "ARG >diff -uNr piranha-0.8.2-orig/nanny.c piranha/nanny.c >--- piranha-0.8.2-orig/nanny.c 2006-01-12 15:54:59.000000000 -0600 >+++ piranha/nanny.c 2006-10-10 08:19:06.000000000 -0500 >@@ -652,12 +652,13 @@ > >int > > shutdownDev (int flags, char *ipvsadm, char *virtualAddress, int port, >- struct in_addr *remoteAddr, int service_type) >+ struct in_addr *remoteAddr, int rport, int service_type) > { > >char *argv[40]; > > char **argp = argv; > char virtName[80]; >+ char remoteName[80]; > char fwmStr[20]; > int rc = 0; > >@@ -681,7 +682,8 @@ > > } > >*argp++ = (char *) "-r"; > >- *argp++ = inet_ntoa (*remoteAddr); >+ sprintf (remoteName, "%s:%d", inet_ntoa (*remoteAddr), rport); >+ *argp++ = remoteName; > *argp = NULL; > >rc = runCommand (ipvsadm, flags, argv, -1); > >@@ -693,11 +695,12 @@ > >int > > adjustDevice (int flags, char *ipvsadm, char *virtualAddress, int port, >- struct in_addr *remoteAddr, char *routingMethod, int weight) >+ struct in_addr *remoteAddr, int rport, char *routingMethod, int >weight) > { > char *argv[40]; > char **argp = argv; > char virtName[80]; >+ char remoteName[80]; > char weightStr[20]; > char fwmStr[20]; > >@@ -720,7 +723,8 @@ > > } > >*argp++ = (char *) "-r"; > >- *argp++ = inet_ntoa (*remoteAddr); >+ sprintf (remoteName, "%s:%d", inet_ntoa (*remoteAddr), rport); >+ *argp++ = remoteName; > *argp++ = routingMethod; > *argp++ = (char *) "-w"; > *argp++ = weightStr; >@@ -731,13 +735,14 @@ > >int > > bringUpDev (int flags, char *ipvsadm, char *virtualAddress, int port, >- struct in_addr *remoteAddr, char *routingMethod, int weight, >+ struct in_addr *remoteAddr, int rport, char *routingMethod, int >weight, > int service_type) > { > >char *argv[40]; > > char **argp = argv; > char virtName[80]; >+ char remoteName[80]; > char weightStr[20]; > char fwmStr[20]; > int rc = 0; >@@ -764,7 +769,8 @@ > } > >*argp++ = (char *) "-r"; > >- *argp++ = inet_ntoa (*remoteAddr); >+ sprintf (remoteName, "%s:%d", inet_ntoa (*remoteAddr), rport); >+ *argp++ = remoteName; > *argp++ = routingMethod; > *argp++ = (char *) "-w"; > *argp++ = weightStr; >@@ -860,10 +866,11 @@ > >int > > external_check (int flags, char *send_program, char *expect_str, >- struct in_addr *remoteAddr, int timeout) >+ struct in_addr *remoteAddr, int rport, int timeout) > { > char *result; > char *token = NULL; >+ char tokenTemp[20]; > char temp[255]; > char *argv[40]; /* need this to build up argument list */ > char **argp = argv; >@@ -883,6 +890,10 @@ > i++; > if (strcmp (token, "%h") == 0) > token = inet_ntoa (*remoteAddr); >+ else if (strcmp (token, "%p") == 0) { >+ sprintf (tokenTemp, "%d", rport); >+ token = tokenTemp; >+ } > *argp++ = token; > token = strtok (NULL, " "); > } >@@ -897,8 +908,8 @@ > >if (flags & NANNY_FLAG_VERBOSE) > > piranha_log (flags, (char *) >- "Got result (%s) from command sent to (%s)\n", >- result, inet_ntoa (*remoteAddr)); >+ "Got result (%s) from command sent to (%s:%d)\n", >+ result, inet_ntoa (*remoteAddr), rport); > >if ((result == NULL) && (expect_str == NULL)) { > > piranha_log (flags, (char *) >@@ -908,16 +919,16 @@ > >if (result == NULL) { > > piranha_log (flags, (char *) >- "Ran the external sending program to (%s) but didn't get anything back\n", >- inet_ntoa (*remoteAddr)); >+ "Ran the external sending program to (%s:%d) but didn't get anything back\n", >+ inet_ntoa (*remoteAddr), rport); > return 0; > } > >if (expect_str != NULL) { > > if (strcmp (expect_str, result) != 0) { > piranha_log (flags, (char *) >- "Trouble. Recieved results are not what we expected from (%s)\n", >- inet_ntoa (*remoteAddr)); >+ "Trouble. Recieved results are not what we expected from (%s:%d)\n", >+ inet_ntoa (*remoteAddr), rport); > res = 1; > } else { > res = 0; >@@ -1005,7 +1016,7 @@ > >int > > adjustWeight (int flags, char *ipvsadm, char *virtualAddress, int port, >- struct in_addr *remoteAddr, char *routingMethod, int weight, >+ struct in_addr *remoteAddr, int rport, char *routingMethod, int weight, > int interval, int scale, char *loadCommand, int lastWeight) > { > int newWeight; >@@ -1020,10 +1031,10 @@ > piranha_log (flags, (char *) > "Adjusting weight of %s:%d to %d", > inet_ntoa (*remoteAddr), >- port, newWeight); >+ rport, newWeight); > >if (adjustDevice (flags, ipvsadm, virtualAddress, > >- port, remoteAddr, routingMethod, newWeight)) >+ port, remoteAddr, rport, routingMethod, newWeight)) > return -1; > } else { > /* Querying the load information and adjusting the >@@ -1065,11 +1076,11 @@ > (char *) > "Adjusting weight of %s:%d to %d", > inet_ntoa(*remoteAddr), >- port, newWeight); >+ rport, newWeight); > >if (adjustDevice (flags, ipvsadm, > > virtualAddress, port, >- remoteAddr, routingMethod, >+ remoteAddr, rport, routingMethod, > newWeight)) > return -1; > >@@ -1085,7 +1096,7 @@ int > > checkState (int flags, char *ipvsadm, char *virtualAddress, int port, >- struct in_addr *remoteAddr, char *routingMethod, int weight, >+ struct in_addr *remoteAddr, int rport, char *routingMethod, int weight, > int *isActive, sigset_t *sigs, int service_type) > { > if (!nextState) >@@ -1103,7 +1114,7 @@ > /* Virtual Server */ > if (bringUpDev (flags, ipvsadm, > virtualAddress, port, >- remoteAddr, > >+ remoteAddr, rport, routingMethod, > > weight, service_type)) > return -1; >@@ -1120,7 +1131,7 @@ > /* Virtual Server */ > if (shutdownDev (flags, ipvsadm, > virtualAddress, port, >- remoteAddr, service_type)) >+ remoteAddr, rport, service_type)) > return -1; > } > *isActive = 0; >@@ -1145,7 +1156,7 @@ > >int > > run (int flags, char *ipvsadm, char *virtualAddress, int port, >- struct in_addr *remoteAddr, char *routingMethod, int weight, >+ struct in_addr *remoteAddr, int rport, char *routingMethod, int weight, > int interval, int countThresh, int scale, char *loadCommand, > char *send_program, char *send_str, char *expect_str, > int quiesce_srv, int service_type) >@@ -1214,7 +1225,7 @@ > >if (isActive && service_type == SERV_LVS) { > > if (shutdownDev (flags, ipvsadm, virtualAddress, port, >- remoteAddr, service_type)) >+ remoteAddr, rport, service_type)) > exit (1); > } > >@@ -1256,10 +1267,10 @@ > > if (send_program != NULL) { > isAvail = > !external_check (flags, send_program, expect_str, >- remoteAddr, interval); >+ remoteAddr, rport, interval); > } else { > isAvail = >- !pinger (flags, pingSocket, remoteAddr, port, >+ !pinger (flags, pingSocket, remoteAddr, rport, > interval, send_str, expect_str); > } > >@@ -1311,7 +1322,7 @@ > > > piranha_log (flags, > (char *) "making %s:%d available", >- inet_ntoa (*remoteAddr), port); >+ inet_ntoa (*remoteAddr), rport); > >/* compute the initial weight */ > > newWeight = weight >> 5; >@@ -1322,14 +1333,14 @@ > if (adjustDevice > (flags, ipvsadm, > virtualAddress, port, >- remoteAddr, routingMethod, >+ remoteAddr, rport, routingMethod, > newWeight)) > return -1; > } else { > if (bringUpDev > (flags, ipvsadm, > virtualAddress, port, >- remoteAddr, routingMethod, >+ remoteAddr, rport, routingMethod, > newWeight, service_type)) > return -1; > isSrvUp = 1; >@@ -1350,7 +1361,7 @@ > /* Failover Services */ > piranha_log (flags, (char *) > "Exiting due to connection failure of %s:%d", >- inet_ntoa (*remoteAddr), port); >+ inet_ntoa (*remoteAddr), rport); > >/* > > ** Start service locally >@@ -1364,19 +1375,19 @@ > /* Virtual Services */ > piranha_log (flags, (char *) > "shutting down %s:%d due to connection failure", >- inet_ntoa (*remoteAddr), port); >+ inet_ntoa (*remoteAddr), rport); > >if (quiesce_srv && isSrvUp) { > > if (adjustDevice > (flags, ipvsadm, > virtualAddress, port, >- remoteAddr, routingMethod, 0)) >+ remoteAddr, rport, routingMethod, 0)) > return -1; > } else { > if (shutdownDev > (flags, ipvsadm, > virtualAddress, port, >- remoteAddr, service_type)) >+ remoteAddr, rport, service_type)) > return -1; > isSrvUp = 0; > } >@@ -1405,7 +1416,7 @@ > (interval > 20 || currCount % (20 / interval) == 0)) { > rc = adjustWeight (flags, ipvsadm, > virtualAddress, port, >- remoteAddr, routingMethod, >+ remoteAddr, rport, routingMethod, > weight, interval, scale, > loadCommand, lastWeight); > if (rc < 0) >@@ -1428,7 +1439,7 @@ > alarm (0); > >rc = checkState(flags, ipvsadm, virtualAddress, > >- port, remoteAddr, routingMethod, >+ port, remoteAddr, rport, routingMethod, > weight, &isActive, &sigs, >service_type); > if (rc < 0) > return rc; >@@ -1526,6 +1537,7 @@ > int teststart = 0; > int interval = 10; > int port = 80; >+ int rport = 80; > int weight = 1; > int reentryTime = 0; > int verbose = 0; >@@ -1550,7 +1562,7 @@ > char *send_str = NULL; > char *expect_str = NULL; > >- /* Letters taken: DIMRSTUV acnpstuvwx */ > >+ /* Letters taken: DIMRSTUV acnprstuvwx */ > >struct poptOption options[] = { > > {"interval", 't', POPT_ARG_INT, &interval, 0, >@@ -1573,6 +1585,9 @@ > N_("don't fork, but do disassociate")}, > >{"port", 'p', POPT_ARG_INT, &port, 0, > >+ N_("port on virtual service (default 80)")}, >+ >+ {"rport", 'r', POPT_ARG_INT, &rport, 0, > N_("port to check for availability (default 80)")}, > >{"reentrytime", 'a', POPT_ARG_INT, &reentryTime, 0, > >@@ -1760,10 +1775,10 @@ > virtualAddress, port); > else /* service_type == SERV_LVS */ > piranha_log (flags, (char *) >- "starting LVS client monitor for %s:%d", >- virtualAddress, port); >+ "starting LVS client monitor for %s:%d -> %s:%d", >+ virtualAddress, port, server, rport); > >- return run (flags, vsadmPath, virtualAddress, port, &remoteAddr, > >+ return run (flags, vsadmPath, virtualAddress, port, &remoteAddr, rport, > routingMethod, weight, interval, countThresh, scale, > loadCommand, send_program, send_str, expect_str, > quiesce_srv, service_type);
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 396241
: 267301 |
267311