[OpenVMPS-devel] External program: answer not being accepted
Brought to you by:
dori_seliskar
|
From: Sean B. <se...@bo...> - 2005-11-04 15:27:35
|
Hi,
I've having problems getting a basic external plug-in to work.
I have a simple PHP script:
while (true) {
$fd = fopen("php://stdin", "r");
$line=rtrim( fgets($fd, 1024) );
if (strlen($line) > 0) {
list($domain, $switch, $port, $lastvlan, $mac)=explode(" ", $line);
echo("ALLOW $lastvlan\n");
flush(); // don't know if this needed, but doesn't seem to matter
}
fclose($fd);
sleep(1); # wait 1 secs, before retrying
}
The data arrives OK, but what I send back never seems to be sent by vmpsd,
I've tried
echo("ALLOW $lastvlan\n\n");
echo("ALLOW $lastvlan\n");
echo("ALLOW $lastvlan");
but no luck.
IN vmpsd's external.c is seems to happen around here:
write(tocli[1], str, strlen(str));
n = readline(fromcli[0], buf, 255);
The first line seems to work fine, the second never comes back.
I added in
vmps_log(VQP|DEBUG, ">>>> Sending: %s ", str);
before the "write" line and this works.
When I look at the code for readline() it seems to read char by char until
it hits 255 or \n. So it should work.
In syslog I see:
Nov 3 23:04:37 INOCESvmps1 vmpsd: ==================================
Nov 3 23:04:37 INOCESvmps1 vmpsd: VQP Request
Nov 3 23:04:37 INOCESvmps1 vmpsd: Unknown: 1
Nov 3 23:04:37 INOCESvmps1 vmpsd: Request Type: 1
Nov 3 23:04:37 INOCESvmps1 vmpsd: Response: 0
Nov 3 23:04:37 INOCESvmps1 vmpsd: No. Data Items: 6
Nov 3 23:04:37 INOCESvmps1 vmpsd: Sequence No.: 4660
Nov 3 23:04:37 INOCESvmps1 vmpsd: Client IP address: 193.111.222.1
Nov 3 23:04:37 INOCESvmps1 vmpsd: Port name: Fa0/17
Nov 3 23:04:37 INOCESvmps1 vmpsd: Vlan name: test
Nov 3 23:04:37 INOCESvmps1 vmpsd: Domain name: Domain
Nov 3 23:04:37 INOCESvmps1 vmpsd: MAC address: 080020b0cb95
Nov 3 23:04:37 INOCESvmps1 vmpsd: >>>> Sending: Domain 193.111.222.1 Fa0/17
switch1 0800.20b0.cb95
My external sends back: "ALLOW test", but vmpsd never sees it arriving and
vmpsd just sits there waiting.
Any sugsestions /tips?
Thanks,
Sean
|