Hi Chun,

thanks a lot for your diagnosis of this issue. I appreciate it. Your patch seems ok, and the most important thing is to have your test. I have applied this patch to the sources and we'll hope it works out.

M

Chun Tian (binghe) wrote:
Hi, Werner & Mark

Sorry to reply this mail late. I just find time to do this job, and to test cfengine, I must set up a new test environment and bootstrap a new cfengine config, that's not easy.

By checking Mark's svn commit (r524):

http://svn.iu.hio.no/viewvc/trunk/src/nameinfo.c?root=Cfengine-2&r1=498&r2=524&pathrev=524

Now I'm quite sure there's a new bug invoked which caused CFengine can only detect one interface's address.

In function GetInterfaceInfo (nameinfo.c), Mark added a first_address var which been set to true at start:

int fd,len,i,j,first_address = true;

There's no other assignment to set this variable to true again but a chance to set it false:

          if (first_address)
             {
             first_address = false;
             strcpy(ip,inet_ntoa(sin->sin_addr));
snprintf(name,CF_MAXVARSIZE-1,"ipv4[%s]",CanonifyName(ifp->ifr_name));
             AddMacroValue(CONTEXTID,name,ip);

So this IF block can only run exactly ONCE, which caused global.ipv4[ethX] got only one interface's address, which depends the interfaces order on linux. For most cases, eth0 appear before eth1, so global.ipv4[eth0] is good but global.ipv4[eth1] cannot expand to any address because it didn't exist in cfengine's nameinfo list.

For a quick fix, I attach a new patch which can be put into Debian package's debian/patches directory, or merge into cfengine trunk. I test it, and works for me. Please review it.

Thanks,

Chun Tian (binghe)

"Chun Tian (binghe)" <[EMAIL PROTECTED]> writes:

I have this "editfiles" class definition:

editfiles:
 { /etc/default/snmpd
   ReplaceFirst "^SNMPDOPTS.*$" With "SNMPDOPTS='-Lsd -Lf /dev/null -
u snmp -I -smux -p /var/run/snmpd.pid ${global.ipv4[eth0]}:1185 $
{global.ipv4[eth1]}'"
 }

I found one of ${global.ipv4[eth0]} and ${global.ipv4[eth1]} cannot be
expanded into right value, which depends my interfaces order on
server.

I haven't had time to test this myself, but this worked as intended
before we applied the patch from upstream?


- Werner



--


Mark Burgess

Web: http://www.iu.hio.no/~mark
Tlf: +47 22453272



--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to