cfengine stable port information

Package: cfengine
Version: 2.1.15
Revision: 1003
Depends: db48-aes-shlibs | db48-shlibs, openssl098-shlibs, daemonic
BuildDepends: db48-aes | db48, openssl098-dev, fink (>= 0.24.12-1)
Source: ftp://ftp.iu.hio.no/pub/%n/%n-%v.tar.gz
Source-MD5: f03de82709f84c3d6d916b6e557321f9
ConfigureParams: --mandir=%i/share/man --infodir=%p/share/info --libexecdir=%p/lib --sysconfdir=%p/etc/%n --localstatedir=%p/var/%n --with-berkeleydb=%p --with-workdir=%p/var/%n --with-openssl=%p
UseMaxBuildJobs: false
PatchFile: %n.patch
PatchFile-MD5: def2f7ed1c98cd0482b0610b27b5955d
PatchScript: <<
%{default_script}
perl -pi.bak -e 's,-L\.\./pub -lpub,../pub/libpub.a,g' */Makefile.in configure
<<
InstallScript: <<
make install prefix=%i
mkdir -p %i/var/%n/inputs
mkdir %i/var/%n/outputs
mkdir %i/var/%n/modules
<<
DocFiles: ChangeLog AUTHORS COPYING NEWS INSTALL README
DaemonicName: %n
DaemonicFile: <<

%n server
%n server


%p/sbin/cfservd

%p/var/%n/inputs/cfservd.conf





<<
Description: System configuration and adminstration agent
DescDetail: <<
Cfengine, or the configuration engine is an autonomous agent and a middle to
high level policy language and agent for building expert systems to
administrate and configure large computer networks. Cfengine is designed to
be a part of a computer immune system. It is ideal for cluster management and
has been adopted for use all over the world in small and huge organizations
alike.
<<
License: GPL
DescPackaging: <<
Previous packages by Matthew Flanagan

Modernized deps and patched cfenvd.c to work with db48.
<<
Maintainer: None
Homepage: http://www.cfengine.org/

cfengine stable port .patch

diff -ru cfengine-2.1.15.orig/src/cf.extern.h cfengine-2.1.15/src/cf.extern.h
--- cfengine-2.1.15.orig/src/cf.extern.h 2005-05-29 06:34:14.000000000 -0400
+++ cfengine-2.1.15/src/cf.extern.h 2010-03-17 12:29:20.000000000 -0400
@@ -29,6 +29,8 @@
/*******************************************************************/


+#include "../pub/getopt.h"
+
#if defined HAVE_PTHREAD_H && (defined HAVE_LIBPTHREAD || defined BUILDTIN_GCC_THREAD)
extern pthread_mutex_t MUTEX_SYSCALL;
extern pthread_mutex_t MUTEX_LOCK;
@@ -456,6 +458,9 @@
extern char *VFSTAB[];
extern char *VMAILDIR[];
extern char *VNETSTAT[];
+extern char *VROUTE[];
+extern char *VROUTEADDFMT[];
+extern char *VROUTEDELFMT[];
extern char *VFILECOMM[];
extern char *ACTIONSEQTEXT[];
extern char *VEDITNAMES[];
diff -ru cfengine-2.1.15.orig/src/cfenvd.c cfengine-2.1.15/src/cfenvd.c
--- cfengine-2.1.15.orig/src/cfenvd.c 2005-05-25 07:38:54.000000000 -0400
+++ cfengine-2.1.15/src/cfenvd.c 2010-03-17 12:30:13.000000000 -0400
@@ -76,7 +76,7 @@
char BATCHFILE[CF_BUFSIZE];
char STATELOG[CF_BUFSIZE];
char ENV_NEW[CF_BUFSIZE];
-char ENV[CF_BUFSIZE];
+char ENV1[CF_BUFSIZE];

short TCPDUMP = false;
short TCPPAUSE = false;
@@ -282,7 +282,7 @@
snprintf(AVDB,CF_MAXVARSIZE,"%s/state/%s",CFWORKDIR,CF_AVDB_FILE);
snprintf(STATELOG,CF_BUFSIZE,"%s/state/%s",CFWORKDIR,CF_STATELOG_FILE);
snprintf(ENV_NEW,CF_BUFSIZE,"%s/state/%s",CFWORKDIR,CF_ENVNEW_FILE);
-snprintf(ENV,CF_BUFSIZE,"%s/state/%s",CFWORKDIR,CF_ENV_FILE);
+snprintf(ENV1,CF_BUFSIZE,"%s/state/%s",CFWORKDIR,CF_ENV_FILE);

if (!BATCH_MODE)
{
@@ -875,7 +875,7 @@
DeleteItemList(ENTROPIES);
fclose(fp);

-rename(ENV_NEW,ENV);
+rename(ENV_NEW,ENV1);
}

/*********************************************************************/
diff -ru cfengine-2.1.15.orig/src/classes.c cfengine-2.1.15/src/classes.c
--- cfengine-2.1.15.orig/src/classes.c 2005-05-25 03:55:08.000000000 -0400
+++ cfengine-2.1.15/src/classes.c 2010-03-17 12:29:20.000000000 -0400
@@ -539,6 +539,129 @@

/*********************************************************************/

+char *VROUTE[CF_CLASSATTR] =
+ {
+ "-",
+ "-",
+ "-", /* sun4 */
+ "-", /* ultrix */
+ "-", /* hpux */
+ "-", /* aix */
+ "/sbin/route", /* linux */
+ "/usr/sbin/route", /* solaris */
+ "-", /* osf1 */
+ "-", /* digital */
+ "-", /* sun3 */
+ "-", /* irix4 */
+ "-", /* irix */
+ "-", /* irix64 */
+ "/sbin/route", /* freebsd */
+ "/usr/sbin/route", /* solarisx86 */
+ "-", /* bsd4.3 */
+ "-", /* newsos4 */
+ "-", /* netbsd */
+ "-", /* AOS */
+ "-", /* BSDI */
+ "-", /* nextstep */
+ "-", /* cray */
+ "-", /* gnu */
+ "-", /* NT */
+ "-", /* Unixware */
+ "/sbin/route", /* openbsd */
+ "-", /* sco */
+ "/sbin/route", /* darwin */
+ "-", /* ux4800 */
+ "-", /* qnx */
+ "unused-blah",
+ "unused-blah",
+ "unused-blah",
+ NULL
+ };
+
+/*********************************************************************/
+
+char *VROUTEADDFMT[CF_CLASSATTR] =
+ {
+ "-",
+ "-",
+ "-", /* sun4 */
+ "-", /* ultrix */
+ "-", /* hpux */
+ "-", /* aix */
+ "add %s gw %s", /* linux */
+ "add %s %s", /* solaris */
+ "-", /* osf1 */
+ "-", /* digital */
+ "-", /* sun3 */
+ "-", /* irix4 */
+ "-", /* irix */
+ "-", /* irix64 */
+ "add %s %s", /* freebsd */
+ "add %s %s", /* solarisx86 */
+ "-", /* bsd4.3 */
+ "-", /* newsos4 */
+ "-", /* netbsd */
+ "-", /* AOS */
+ "-", /* BSDI */
+ "-", /* nextstep */
+ "-", /* cray */
+ "-", /* gnu */
+ "-", /* NT */
+ "-", /* Unixware */
+ "add %s %s", /* openbsd */
+ "-", /* sco */
+ "add %s %s", /* darwin */
+ "-", /* ux4800 */
+ "-", /* qnx */
+ "unused-blah",
+ "unused-blah",
+ "unused-blah",
+ NULL
+ };
+
+/*********************************************************************/
+
+char *VROUTEDELFMT[CF_CLASSATTR] =
+ {
+ "-",
+ "-",
+ "-", /* sun4 */
+ "-", /* ultrix */
+ "-", /* hpux */
+ "-", /* aix */
+ "del %s", /* linux */
+ "delete %s", /* solaris */
+ "-", /* osf1 */
+ "-", /* digital */
+ "-", /* sun3 */
+ "-", /* irix4 */
+ "-", /* irix */
+ "-", /* irix64 */
+ "delete %s", /* freebsd */
+ "delete %s", /* solarisx86 */
+ "-", /* bsd4.3 */
+ "-", /* newsos4 */
+ "-", /* netbsd */
+ "-", /* AOS */
+ "-", /* BSDI */
+ "-", /* nextstep */
+ "-", /* cray */
+ "-", /* gnu */
+ "-", /* NT */
+ "-", /* Unixware */
+ "delete %s", /* openbsd */
+ "-", /* sco */
+ "delete %s", /* darwin */
+ "-", /* ux4800 */
+ "-", /* qnx */
+ "unused-blah",
+ "unused-blah",
+ "unused-blah",
+ NULL
+ };
+
+/*********************************************************************/
+
char *VFILECOMM[CF_CLASSATTR] =
{
"-",
diff -ru cfengine-2.1.15.orig/src/ifconf.c cfengine-2.1.15/src/ifconf.c
--- cfengine-2.1.15.orig/src/ifconf.c 2005-03-18 12:05:24.000000000 -0500
+++ cfengine-2.1.15/src/ifconf.c 2010-03-17 12:29:20.000000000 -0400
@@ -363,6 +363,14 @@

{ int sk, defaultokay = 1;
struct sockaddr_in sindst,singw;
+ char oldroute[INET_ADDRSTRLEN];
+ char routefmt[CF_MAXVARSIZE];
+
+/* These OSes have these structs defined but use the route command */
+# if defined DARWIN || defined FREEBSD || defined OPENBSD || defined SOLARIS
+# undef HAVE_RTENTRY
+# undef HAVE_ORTENTRY
+# endif

# ifdef HAVE_ORTENTRY
struct ortentry route;
@@ -404,18 +412,23 @@

if ((strncmp(VBUFF,"default",7) == 0)||(strncmp(VBUFF,"0.0.0.0",7) == 0))
{
- if (strstr(VBUFF,VDEFAULTROUTE->name))
- {
- Verbose("cfengine: default route is already set to %s\n",VDEFAULTROUTE->name);
- defaultokay = 1;
- break;
- }
- else
- {
- Verbose("cfengine: default route is already set, but not to %s.\n",VDEFAULTROUTE->name);
- defaultokay = 2;
- break;
- }
+ /* extract the default route */
+ /* format: default|0.0.0.0 route etc */
+ if ((sscanf(VBUFF, "%*[default0. ]%s%*[ ]", &oldroute)) == 1)
+ {
+ if ((strncmp(VDEFAULTROUTE->name, oldroute, INET_ADDRSTRLEN)) == 0)
+ {
+ Verbose("cfengine: default route is already set to %s\n",VDEFAULTROUTE->name);
+ defaultokay = 1;
+ break;
+ }
+ else
+ {
+ Verbose("cfengine: default route is set to %s, but should be %s.\n",oldroute,VDEFAULTROUTE->name);
+ defaultokay = 2;
+ break;
+ }
+ }
}
else
{
@@ -443,20 +456,34 @@
return;
}

-CfLog(cferror,"The default packet-route is incorrectly set, trying to correct\n","");
+CfLog(cferror,"The default route is incorrect, trying to correct\n","");

-# if defined HAVE_RTENTRY || defined HAVE_ORTENTRY
-
-if ((sk = socket(AF_INET,SOCK_RAW,0)) == -1)
+if ( strcmp(VROUTE[VSYSTEMHARDCLASS], "-") != 0 )
{
- if (VSYSTEMHARDCLASS == linuxx)
- {
- Debug ("No raw socket protocol for linux -- faking with shell commands\n");
-
- ShellCommandReturnsZero("/sbin/route del default");

- snprintf(VBUFF,CF_MAXVARSIZE,"/sbin/route add default gw %s",VDEFAULTROUTE->name);
-
+ Debug ("Using route shell commands to set default route\n");
+ if (defaultokay == 2)
+ {
+ if (! DONTDO)
+ {
+ /* get the route command and the format for the delete argument */
+ snprintf(routefmt,CF_MAXVARSIZE,"%s %s",VROUTE[VSYSTEMHARDCLASS],VROUTEDELFMT[VSYSTEMHARDCLASS]);
+ snprintf(VBUFF,CF_MAXVARSIZE,routefmt,"default",VDEFAULTROUTE->name);
+ if (ShellCommandReturnsZero(VBUFF))
+ {
+ CfLog(cfinform,"Removing old default route","");
+ CfLog(cfinform,VBUFF,"");
+ }
+ else
+ {
+ CfLog(cferror,"Error removing route","");
+ }
+ }
+ }
+ if (! DONTDO)
+ {
+ snprintf(routefmt,CF_MAXVARSIZE,"%s %s",VROUTE[VSYSTEMHARDCLASS],VROUTEADDFMT[VSYSTEMHARDCLASS]);
+ snprintf(VBUFF,CF_MAXVARSIZE,routefmt,"default",VDEFAULTROUTE->name);
if (ShellCommandReturnsZero(VBUFF))
{
CfLog(cfinform,"Setting default route","");
@@ -466,44 +493,54 @@
{
CfLog(cferror,"Error setting route","");
}
- return;
}
-
- printf("System class %s\n",CLASSTEXT[VSYSTEMHARDCLASS]);
- perror("cfengine: socket");
- FatalError("Error in SetDefaultRoute()");
+ return;
}
-
-sindst.sin_family = AF_INET;
-singw.sin_family = AF_INET;
-
-sindst.sin_addr.s_addr = INADDR_ANY;
-singw.sin_addr.s_addr = inet_addr(VDEFAULTROUTE->name);
-
-route.rt_dst = *(struct sockaddr *)&sindst; /* This disgusting method is necessary */
-route.rt_gateway = *(struct sockaddr *)&singw;
-route.rt_flags = RTF_GATEWAY;
-
-if (! DONTDO)
+else
{
- if (ioctl(sk,SIOCADDRT, (caddr_t) &route) == -1) /* Get the device status flags */
+#if defined HAVE_RTENTRY || defined HAVE_ORTENTRY
+ Debug ("Using route ioctl to set default route\n");
+ if ((sk = socket(AF_INET,SOCK_RAW,0)) == -1)
{
- CfLog(cferror,"","ioctl SIOCADDRT:");
- FatalError("Software error: set default route");
+ CfLog(cferror,"System class: ", CLASSTEXT[VSYSTEMHARDCLASS]);
+ CfLog(cferror,"","Error in SetDefaultRoute():");
+ perror("cfengine: socket");
}
+ else
+ {
+ sindst.sin_family = AF_INET;
+ singw.sin_family = AF_INET;

- CfLog(cferror,"The routing table did not contain a default route.\n","");
- snprintf(OUTPUT,CF_BUFSIZE*2,"I'm setting it to %s\n",VDEFAULTROUTE->name);
- CfLog(cferror,OUTPUT,"");
- }
+ sindst.sin_addr.s_addr = INADDR_ANY;
+ singw.sin_addr.s_addr = inet_addr(VDEFAULTROUTE->name);

-# else
+ route.rt_dst = *(struct sockaddr *)&sindst; /* This disgusting method is necessary */
+ route.rt_gateway = *(struct sockaddr *)&singw;
+ route.rt_flags = RTF_GATEWAY;
+
+ if (! DONTDO)
+ {
+ if (ioctl(sk,SIOCADDRT, (caddr_t) &route) == -1) /* Get the device status flags */
+ {
+ CfLog(cferror,"Error setting route:","");
+ perror("cfengine: ioctl SIOCADDRT:");
+ }
+ else
+ {
+ CfLog(cferror,"Setting default route.\n","");
+ snprintf(OUTPUT,CF_BUFSIZE*2,"I'm setting it to %s\n",VDEFAULTROUTE->name);
+ CfLog(cferror,OUTPUT,"");
+ }
+ }
+ }
+#else

-/* Socket routing - don't really know how to do this yet */
+ /* Socket routing - don't really know how to do this yet */

-Verbose("Sorry don't know how to do routing on this platform\n");
+ Verbose("Sorry don't know how to do routing on this platform\n");

-# endif
+#endif
+ }
}

#else /* NT or IRIX */

cfengine _unstable_ port .patch