Commit 9036d314 authored by Mike Hibler's avatar Mike Hibler

Support 64-bit FreeBSD on the server side.

NOTE: currently only for FreeBSD 7.3 installs because that is the only
set of boss/ops/fs packages I have built so far!

This mostly involved minor changes to event agents. Too often we were
passing a pointer to a "long" to *get_int32, which on a 64-bit x86 OS would
fill the wrong half of a 64-bit variable. There was also one instance of
TCL code that had to be tweaked to account for 32- vs 64-bit.

These changes also required regeneration of SWIG stubs and an ugly change
to the SWIG generated code to use va_copy rather than direct assignment in
a couple of places.

Also related to SWIG is ensuring that the components that go into the
perl/python stub .so files are built with PIC. The amd64 linker requires
this.

The meta-ports had to be changed to reflect that linuxthreads and
ulsshxmlrpcpp don't work on amd64. The former had little effect as we
had mostly eliminated uses of linuxthreads already. The one thing that
did change was that we do not build nfstrace on amd64 (and we don't
currently use this anyway). Removing ulsshxmlrpcpp required switching
to the new event scheduler (event/new_sched) that Ryan did awhile back.
Note that it is only "new" in the sense that it uses a standard XMLRPC
package, there should be no functional differences. However, to be safe
we only use new_sched as the standard scheduler on 64-bit server installs.

Finally, added support to elabinelab setup to do a 64-bit server install.
Just specify FBSD73-64-STD as the boss/ops/fs osid and rc.mkelab should
do the rest.

That is pretty much it other than some random nits here and there.
parent 997b21b5
......@@ -175,7 +175,7 @@ ifeq ($(STANDALONE_CLEARINGHOUSE),0)
-chmod 777 $(INSTALL_TOPDIR)/exparchive/Archive
-mkdir -p $(INSTALL_TOPDIR)/images
-chmod 775 $(INSTALL_TOPDIR)/images
-ln -s /usr/testbed/bin/nse $(INSTALL_TOPDIR)/bin
-ln -sf /usr/testbed/bin/nse $(INSTALL_TOPDIR)/bin
endif
just-builddirs:
......
/*
* EMULAB-COPYRIGHT
* Copyright (c) 2000-2004, 2006 University of Utah and the Flux Group.
* Copyright (c) 2000-2011 University of Utah and the Flux Group.
* All rights reserved.
*/
......@@ -429,7 +429,8 @@ reset_callback(event_handle_t handle,
char buf[BUFSIZ];
char objname[TBDB_FLEN_EVOBJNAME];
char *prog = "delaysetup";
unsigned long token = ~0;
unsigned long token;
int32_t itoken = ~0;
int errcode = 0;
info("Got a RESET event!\n");
......@@ -441,7 +442,8 @@ reset_callback(event_handle_t handle,
errcode = system(buf);
event_notification_get_int32(handle, notification,
"TOKEN", (int32_t *)&token);
"TOKEN", &itoken);
token = itoken;
event_notification_get_objname(handle, notification,
objname, sizeof(objname));
......
/*
* EMULAB-COPYRIGHT
* Copyright (c) 2000-2010 University of Utah and the Flux Group.
* Copyright (c) 2000-2011 University of Utah and the Flux Group.
* All rights reserved.
*/
......@@ -35,7 +35,7 @@ static pid_t linktest_pid;
static char *pideid;
static char *swapper;
static event_handle_t handle;
static unsigned long token = ~0;
static int32_t token = ~0;
static char *nodelocal_dir;
static void callback(event_handle_t handle,
......@@ -254,7 +254,7 @@ callback(event_handle_t handle, event_notification_t notification, void *data)
}
event_notification_get_int32(handle, notification,
"TOKEN", (int32_t *)&token);
"TOKEN", &token);
event_notification_get_arguments(handle,
notification, args, sizeof(args));
......@@ -362,7 +362,7 @@ exec_linktest(char *args, int buflen) {
i=1;
snprintf(swapperarg, sizeof(swapperarg), "SWAPPER=%s", swapper);
argv[i++] = swapperarg;
snprintf(tokenarg, sizeof(tokenarg), "TOKEN=%lu", token);
snprintf(tokenarg, sizeof(tokenarg), "TOKEN=%u", token);
argv[i++] = tokenarg;
if (nodelocal_dir) {
snprintf(logdirarg, sizeof(logdirarg),
......
......@@ -1026,7 +1026,8 @@ callback(event_handle_t handle, event_notification_t notification, void *data)
char args[BUFSIZ];
struct proginfo *pinfo;
struct timeval now;
unsigned long token = ~0;
unsigned long token;
int32_t itoken = ~0;
assert(handle != NULL);
assert(notification != NULL);
......@@ -1061,7 +1062,8 @@ callback(event_handle_t handle, event_notification_t notification, void *data)
}
event_notification_get_int32(handle, notification,
"TOKEN", (int32_t *)&token);
"TOKEN", &itoken);
token = itoken;
/* ... dispatch the event. */
if (strcmp(event, TBDB_EVENTTYPE_START) == 0 ||
......@@ -1242,7 +1244,8 @@ reload_callback(event_handle_t handle,
{
char event[TBDB_FLEN_EVEVENTTYPE];
char objname[TBDB_FLEN_EVOBJTYPE];
unsigned long token = ~0;
unsigned long token;
int32_t itoken = ~0;
assert(handle != NULL);
assert(notification != NULL);
......@@ -1259,7 +1262,8 @@ reload_callback(event_handle_t handle,
return;
}
event_notification_get_int32(handle, notification,
"TOKEN", (int32_t *)&token);
"TOKEN", &itoken);
token = itoken;
if (strcmp(event, TBDB_EVENTTYPE_RELOAD) == 0) {
info("startrun_callback: Got a reload event.\n");
......
/*
* EMULAB-COPYRIGHT
* Copyright (c) 2003-2007 University of Utah and the Flux Group.
* Copyright (c) 2003-2011 University of Utah and the Flux Group.
* All rights reserved.
*/
......@@ -119,6 +119,7 @@ callback(event_handle_t handle, event_notification_t notification, void *data)
char objecttype[TBDB_FLEN_EVOBJTYPE];
char objectname[TBDB_FLEN_EVOBJNAME];
struct timeval now, then, diff;
int32_t sec, usec;
gettimeofday(&now, NULL);
......@@ -128,10 +129,10 @@ callback(event_handle_t handle, event_notification_t notification, void *data)
notification, objecttype, sizeof(objecttype));
event_notification_get_objname(handle,
notification, objectname, sizeof(objectname));
event_notification_get_int32(handle, notification, "time_usec",
(int *) &then.tv_usec);
event_notification_get_int32(handle, notification, "time_sec",
(int *) &then.tv_sec);
event_notification_get_int32(handle, notification, "time_usec", &usec);
event_notification_get_int32(handle, notification, "time_sec", &sec);
then.tv_sec = sec;
then.tv_usec = usec;
timersub(&now, &then, &diff);
info("%s %s %s %d %d %d %d %d %d\n", eventtype, objecttype,
......
......@@ -20,6 +20,14 @@ PUBSUBMTFLAGS += -DELVIN_COMPAT
endif
SYSTEM := $(shell uname -s)
ARCH := $(shell uname -m)
# We should be able to use va_copy everywhere, but be conservative
SWIGCFLAGS =
ifeq ($(ARCH),amd64)
SWIGCFLAGS += -DHAVE_VA_COPY
endif
LIBS = libevent.a
SWIGLIBS =
# Re-entrant, multi-threaded version on FreeBSD and Linux, not on Windows.
......@@ -84,8 +92,12 @@ event_r.o: event.c
event.o: event.c
$(CC) $(SCFLAGS) -c -o event.o $<
event.So: event.c
$(CC) -fpic -DPIC $(SCFLAGS) -c -o event.So $<
util.o: util.c
$(CC) $(SCFLAGS) -c -o util.o $<
util.So: util.c
$(CC) -fpic -DPIC $(SCFLAGS) -c -o util.So $<
#
# These three targets are for the perl binding to the event system
......@@ -102,7 +114,9 @@ swig-wrappers: event.i event.c event.pm.tail
cat $(SRCDIR)/event.pm.tail >> $(SRCDIR)/event.pm
event_wrap.o: $(SRCDIR)/event_wrap.c
$(CC) -c $(CFLAGS_NOWARN) $(PCORE) $<
$(CC) -c $(SWIGCFLAGS) $(CFLAGS_NOWARN) $(PCORE) $<
event_wrap.So: $(SRCDIR)/event_wrap.c
$(CC) -fpic -DPIC -c $(SWIGCFLAGS) $(CFLAGS_NOWARN) $(PCORE) -o event_wrap.So $<
#
# Note: The python version of the wrappers do not seem to be afflicted by the
......@@ -117,12 +131,14 @@ swig-pywrappers: event.i event.h event.c tbevent.py.tail
# $(SRCDIR)/event_wrap_py.c: swig-pywrappers
event_wrap_py.o: $(SRCDIR)/event_wrap_py.c event.h
$(CC) -c $(CFLAGS_NOWARN) $(PYCORE) $<
$(CC) -c $(SWIGCFLAGS) $(CFLAGS_NOWARN) $(PYCORE) $<
event_wrap_py.So: $(SRCDIR)/event_wrap_py.c event.h
$(CC) -fpic -DPIC -c $(SWIGCFLAGS) $(CFLAGS_NOWARN) $(PYCORE) -o event_wrap_py.So $<
event.so: event.o event_wrap.o util.o
event.so: event.So event_wrap.So util.So
ld -shared $^ $(PUBSUBLIB) -lcrypto -o event.so
_tbevent.so: event.o event_wrap_py.o util.o
_tbevent.so: event.So event_wrap_py.So util.So
ld -shared $^ $(PUBSUBLIB) -lcrypto -o $@
LIB_STUFF = event.pm event.so tbevent.py _tbevent.so
......@@ -155,7 +171,7 @@ client-pllibinstall: event.so
$(INSTALL_PROGRAM) event.so $(DESTDIR)$(CLIENT_BINDIR)/event.so
clean:
/bin/rm -f *.o libevent.a libevent_r.a *.so *.py
/bin/rm -f *.o libevent.a libevent_r.a *.So *.so *.py
distclean:
/bin/rm -f event.pm event_wrap.c event_wrap_py.c tbevent.py
......
......@@ -21,6 +21,7 @@
#include <assert.h>
#include <errno.h>
#include <string.h>
#include <stdarg.h>
#include <unistd.h>
#include <netdb.h>
#include <limits.h>
......
......@@ -10,7 +10,7 @@ use base qw(DynaLoader);
package eventc;
bootstrap event;
package event;
@EXPORT = qw($MAXHOSTNAMELEN event_handle_server_set event_handle_server_get event_handle_status_set event_handle_status_get event_handle_keydata_set event_handle_keydata_get event_handle_keylen_set event_handle_keylen_get event_handle_do_loop_set event_handle_do_loop_get event_handle_connect_set event_handle_connect_get event_handle_disconnect_set event_handle_disconnect_get event_handle_mainloop_set event_handle_mainloop_get event_handle_notify_set event_handle_notify_get event_handle_subscribe_set event_handle_subscribe_get event_handle_unsubscribe_set event_handle_unsubscribe_get new_event_handle delete_event_handle event_notification_pubsub_notification_set event_notification_pubsub_notification_get event_notification_has_hmac_set event_notification_has_hmac_get new_event_notification delete_event_notification address_tuple_site_set address_tuple_site_get address_tuple_expt_set address_tuple_expt_get address_tuple_group_set address_tuple_group_get address_tuple_host_set address_tuple_host_get address_tuple_objtype_set address_tuple_objtype_get address_tuple_objname_set address_tuple_objname_get address_tuple_eventtype_set address_tuple_eventtype_get address_tuple_scheduler_set address_tuple_scheduler_get address_tuple_timeline_set address_tuple_timeline_get new_address_tuple delete_address_tuple $ADDRESSTUPLE_ALL $OBJECTTYPE_TESTBED $OBJECTTYPE_TRAFGEN address_tuple_alloc address_tuple_free $EVENT_HOST_ANY $EVENT_NULL $EVENT_TEST $EVENT_SCHEDULE $EVENT_TRAFGEN_START $EVENT_TRAFGEN_STOP event_register event_register_withkeyfile event_register_withkeydata event_register_withkeyfile_withretry event_register_withkeydata_withretry event_unregister c_event_poll c_event_poll_blocking dont_use_this_function_because_it_does_not_work event_stop_main event_notify event_schedule event_notification_alloc event_notification_free event_notification_clone event_notification_get_double event_notification_get_int32 event_notification_get_int64 event_notification_get_opaque_length event_notification_get_string_length event_notification_get_opaque c_event_notification_get_string event_notification_put_double event_notification_put_int32 event_notification_put_int64 event_notification_put_opaque event_notification_put_string event_notification_remove c_event_subscribe event_subscribe_auth event_async_subscribe event_unsubscribe event_async_unsubscribe event_notification_insert_hmac event_set_idle_period event_set_failover event_arg_get event_arg_dup $EA_TAG_DONE $EA_Site $EA_Experiment $EA_Group $EA_Host $EA_Type $EA_Name $EA_Event $EA_Arguments $EA_ArgInteger $EA_ArgFloat $EA_ArgString $EA_When event_notification_create_v event_notification_create event_do_v event_do xmalloc xrealloc make_timestamp timeval_tv_sec_set timeval_tv_sec_get timeval_tv_usec_set timeval_tv_usec_get new_timeval delete_timeval callback_data_callback_notification_set callback_data_callback_notification_get callback_data_next_set callback_data_next_get new_callback_data delete_callback_data $callback_data_list allocate_callback_data free_callback_data dequeue_callback_data enqueue_callback_data perl_stub_callback stub_event_subscribe $event_string_buffer event_notification_get_string event_notification_get_site event_notification_get_expt event_notification_get_group event_notification_get_host event_notification_get_objtype event_notification_get_objname event_notification_get_eventtype event_notification_get_arguments event_notification_set_arguments event_notification_get_sender event_notification_set_sender );
@EXPORT = qw($EVENT_LIBRARY_VERSION $MAXHOSTNAMELEN event_handle_server_set event_handle_server_get event_handle_status_set event_handle_status_get event_handle_keydata_set event_handle_keydata_get event_handle_keylen_set event_handle_keylen_get event_handle_do_loop_set event_handle_do_loop_get event_handle_connect_set event_handle_connect_get event_handle_disconnect_set event_handle_disconnect_get event_handle_mainloop_set event_handle_mainloop_get event_handle_notify_set event_handle_notify_get event_handle_subscribe_set event_handle_subscribe_get event_handle_unsubscribe_set event_handle_unsubscribe_get new_event_handle delete_event_handle event_notification_pubsub_notification_set event_notification_pubsub_notification_get event_notification_has_hmac_set event_notification_has_hmac_get new_event_notification delete_event_notification address_tuple_site_set address_tuple_site_get address_tuple_expt_set address_tuple_expt_get address_tuple_group_set address_tuple_group_get address_tuple_host_set address_tuple_host_get address_tuple_objtype_set address_tuple_objtype_get address_tuple_objname_set address_tuple_objname_get address_tuple_eventtype_set address_tuple_eventtype_get address_tuple_scheduler_set address_tuple_scheduler_get address_tuple_timeline_set address_tuple_timeline_get new_address_tuple delete_address_tuple $ADDRESSTUPLE_ALL $OBJECTTYPE_TESTBED $OBJECTTYPE_TRAFGEN address_tuple_alloc address_tuple_free $EVENT_HOST_ANY $EVENT_NULL $EVENT_TEST $EVENT_SCHEDULE $EVENT_TRAFGEN_START $EVENT_TRAFGEN_STOP event_register event_register_withkeyfile event_register_withkeydata event_register_withkeyfile_withretry event_register_withkeydata_withretry event_unregister c_event_poll c_event_poll_blocking dont_use_this_function_because_it_does_not_work event_stop_main event_notify event_schedule event_notification_alloc event_notification_free event_notification_clone event_notification_get_double event_notification_get_int32 event_notification_get_int64 event_notification_get_opaque_length event_notification_get_string_length event_notification_get_opaque c_event_notification_get_string event_notification_put_double event_notification_put_int32 event_notification_put_int64 event_notification_put_opaque event_notification_put_string event_notification_remove c_event_subscribe event_subscribe_auth event_async_subscribe event_unsubscribe event_async_unsubscribe event_notification_insert_hmac event_set_idle_period event_set_failover event_arg_get event_arg_dup $EA_TAG_DONE $EA_Site $EA_Experiment $EA_Group $EA_Host $EA_Type $EA_Name $EA_Event $EA_Arguments $EA_ArgInteger $EA_ArgFloat $EA_ArgString $EA_When event_notification_create_v event_notification_create event_do_v event_do xmalloc xrealloc make_timestamp timeval_tv_sec_set timeval_tv_sec_get timeval_tv_usec_set timeval_tv_usec_get new_timeval delete_timeval callback_data_callback_notification_set callback_data_callback_notification_get callback_data_next_set callback_data_next_get new_callback_data delete_callback_data $callback_data_list allocate_callback_data free_callback_data dequeue_callback_data enqueue_callback_data perl_stub_callback stub_event_subscribe $event_string_buffer event_notification_get_string event_notification_get_site event_notification_get_expt event_notification_get_group event_notification_get_host event_notification_get_objtype event_notification_get_objname event_notification_get_eventtype event_notification_get_arguments event_notification_set_arguments event_notification_get_sender event_notification_set_sender );
# ---------- BASE METHODS -------------
......@@ -356,6 +356,7 @@ sub ACQUIRE {
package event;
*EVENT_LIBRARY_VERSION = *eventc::EVENT_LIBRARY_VERSION;
*MAXHOSTNAMELEN = *eventc::MAXHOSTNAMELEN;
*ADDRESSTUPLE_ALL = *eventc::ADDRESSTUPLE_ALL;
*OBJECTTYPE_TESTBED = *eventc::OBJECTTYPE_TESTBED;
......
......@@ -1537,6 +1537,26 @@ SWIGEXPORT void SWIG_init (CV *cv, CPerlObj *);
#include "event.h"
SWIGINTERNINLINE SV *
SWIG_FromCharPtrAndSize(const char* carray, size_t size)
{
SV *obj = sv_newmortal();
if (carray) {
sv_setpvn(obj, carray, size);
} else {
sv_setsv(obj, &PL_sv_undef);
}
return obj;
}
SWIGINTERNINLINE SV *
SWIG_FromCharPtr(const char *cptr)
{
return SWIG_FromCharPtrAndSize(cptr, (cptr ? strlen(cptr) : 0));
}
SWIGINTERNINLINE SV *
SWIG_From_long SWIG_PERL_DECL_ARGS_1(long value)
{
......@@ -1737,26 +1757,6 @@ SWIG_AsCharPtrAndSize(SV *obj, char** cptr, size_t* psize, int *alloc)
SWIGINTERNINLINE SV *
SWIG_FromCharPtrAndSize(const char* carray, size_t size)
{
SV *obj = sv_newmortal();
if (carray) {
sv_setpvn(obj, carray, size);
} else {
sv_setsv(obj, &PL_sv_undef);
}
return obj;
}
SWIGINTERNINLINE SV *
SWIG_FromCharPtr(const char *cptr)
{
return SWIG_FromCharPtrAndSize(cptr, (cptr ? strlen(cptr) : 0));
}
SWIGINTERN int
SWIG_AsVal_unsigned_SS_long SWIG_PERL_DECL_ARGS_2(SV *obj, unsigned long *val)
{
......@@ -5666,7 +5666,12 @@ XS(_wrap_event_notification_create_v) {
if (!argp4) {
SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "event_notification_create_v" "', argument " "4"" of type '" "va_list""'");
} else {
arg4 = *((va_list *)(argp4));
#ifdef HAVE_VA_COPY
/* XXX hand-tweaked by mike to use va_copy rather than assignment */
va_copy(arg4, *((va_list *)(argp4)));
#else
arg4 = *((va_list *)(argp4));
#endif
}
}
result = (event_notification_t)event_notification_create_v(arg1,arg2,arg3,arg4);
......@@ -5759,7 +5764,12 @@ XS(_wrap_event_do_v) {
if (!argp3) {
SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "event_do_v" "', argument " "3"" of type '" "va_list""'");
} else {
arg3 = *((va_list *)(argp3));
#ifdef HAVE_VA_COPY
/* XXX hand-tweaked by mike to use va_copy rather than assignment */
va_copy(arg3, *((va_list *)(argp3)));
#else
arg3 = *((va_list *)(argp3));
#endif
}
}
result = (int)event_do_v(arg1,arg2,arg3);
......@@ -7487,6 +7497,11 @@ XS(SWIG_init) {
SvREADONLY_on(sv);
}
/*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
SV *sv = get_sv((char*) SWIG_prefix "EVENT_LIBRARY_VERSION", TRUE | 0x2 | GV_ADDMULTI);
sv_setsv(sv, SWIG_FromCharPtr("1.0"));
SvREADONLY_on(sv);
} while(0) /*@SWIG@*/;
/*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
SV *sv = get_sv((char*) SWIG_prefix "MAXHOSTNAMELEN", TRUE | 0x2 | GV_ADDMULTI);
sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(64)));
......
This source diff could not be displayed because it is too large. You can view the blob instead.
# This file was created automatically by SWIG 1.3.29.
# Don't modify this file, modify the SWIG interface instead.
# This file was automatically generated by SWIG (http://www.swig.org).
# Version 1.3.39
#
# Do not make changes to this file unless you know what you are doing--modify
# the SWIG interface file instead.
# This file is compatible with both classic and new-style classes.
import _tbevent
import new
new_instancemethod = new.instancemethod
from sys import version_info
if version_info >= (2,6,0):
def swig_import_helper():
from os.path import dirname
import imp
fp = None
try:
fp, pathname, description = imp.find_module('_tbevent', [dirname(__file__)])
except ImportError:
import _tbevent
return _tbevent
if fp is not None:
try:
_mod = imp.load_module('_tbevent', fp, pathname, description)
finally:
fp.close()
return _mod
_tbevent = swig_import_helper()
del swig_import_helper
else:
import _tbevent
del version_info
try:
_swig_property = property
except NameError:
pass # Python < 2.2 doesn't have 'property'.
def _swig_setattr_nondynamic(self,class_type,name,value,static=1):
if (name == "thisown"): return self.this.own(value)
if (name == "this"):
if type(value).__name__ == 'PySwigObject':
if type(value).__name__ == 'SwigPyObject':
self.__dict__[name] = value
return
method = class_type.__swig_setmethods__.get(name,None)
......@@ -25,23 +51,22 @@ def _swig_getattr(self,class_type,name):
if (name == "thisown"): return self.this.own()
method = class_type.__swig_getmethods__.get(name,None)
if method: return method(self)
raise AttributeError,name
raise AttributeError(name)
def _swig_repr(self):
try: strthis = "proxy of " + self.this.__repr__()
except: strthis = ""
return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,)
import types
try:
_object = types.ObjectType
_object = object
_newclass = 1
except AttributeError:
class _object : pass
_newclass = 0
del types
EVENT_LIBRARY_VERSION = _tbevent.EVENT_LIBRARY_VERSION
MAXHOSTNAMELEN = _tbevent.MAXHOSTNAMELEN
class event_handle(_object):
__swig_setmethods__ = {}
......@@ -51,39 +76,39 @@ class event_handle(_object):
__repr__ = _swig_repr
__swig_setmethods__["server"] = _tbevent.event_handle_server_set
__swig_getmethods__["server"] = _tbevent.event_handle_server_get
if _newclass:server = property(_tbevent.event_handle_server_get, _tbevent.event_handle_server_set)
if _newclass:server = _swig_property(_tbevent.event_handle_server_get, _tbevent.event_handle_server_set)
__swig_setmethods__["status"] = _tbevent.event_handle_status_set
__swig_getmethods__["status"] = _tbevent.event_handle_status_get
if _newclass:status = property(_tbevent.event_handle_status_get, _tbevent.event_handle_status_set)
if _newclass:status = _swig_property(_tbevent.event_handle_status_get, _tbevent.event_handle_status_set)
__swig_setmethods__["keydata"] = _tbevent.event_handle_keydata_set
__swig_getmethods__["keydata"] = _tbevent.event_handle_keydata_get
if _newclass:keydata = property(_tbevent.event_handle_keydata_get, _tbevent.event_handle_keydata_set)
if _newclass:keydata = _swig_property(_tbevent.event_handle_keydata_get, _tbevent.event_handle_keydata_set)
__swig_setmethods__["keylen"] = _tbevent.event_handle_keylen_set
__swig_getmethods__["keylen"] = _tbevent.event_handle_keylen_get
if _newclass:keylen = property(_tbevent.event_handle_keylen_get, _tbevent.event_handle_keylen_set)
if _newclass:keylen = _swig_property(_tbevent.event_handle_keylen_get, _tbevent.event_handle_keylen_set)
__swig_setmethods__["do_loop"] = _tbevent.event_handle_do_loop_set
__swig_getmethods__["do_loop"] = _tbevent.event_handle_do_loop_get
if _newclass:do_loop = property(_tbevent.event_handle_do_loop_get, _tbevent.event_handle_do_loop_set)
if _newclass:do_loop = _swig_property(_tbevent.event_handle_do_loop_get, _tbevent.event_handle_do_loop_set)
__swig_setmethods__["connect"] = _tbevent.event_handle_connect_set
__swig_getmethods__["connect"] = _tbevent.event_handle_connect_get
if _newclass:connect = property(_tbevent.event_handle_connect_get, _tbevent.event_handle_connect_set)
if _newclass:connect = _swig_property(_tbevent.event_handle_connect_get, _tbevent.event_handle_connect_set)
__swig_setmethods__["disconnect"] = _tbevent.event_handle_disconnect_set
__swig_getmethods__["disconnect"] = _tbevent.event_handle_disconnect_get
if _newclass:disconnect = property(_tbevent.event_handle_disconnect_get, _tbevent.event_handle_disconnect_set)
if _newclass:disconnect = _swig_property(_tbevent.event_handle_disconnect_get, _tbevent.event_handle_disconnect_set)
__swig_setmethods__["mainloop"] = _tbevent.event_handle_mainloop_set
__swig_getmethods__["mainloop"] = _tbevent.event_handle_mainloop_get
if _newclass:mainloop = property(_tbevent.event_handle_mainloop_get, _tbevent.event_handle_mainloop_set)
if _newclass:mainloop = _swig_property(_tbevent.event_handle_mainloop_get, _tbevent.event_handle_mainloop_set)
__swig_setmethods__["notify"] = _tbevent.event_handle_notify_set
__swig_getmethods__["notify"] = _tbevent.event_handle_notify_get
if _newclass:notify = property(_tbevent.event_handle_notify_get, _tbevent.event_handle_notify_set)
if _newclass:notify = _swig_property(_tbevent.event_handle_notify_get, _tbevent.event_handle_notify_set)
__swig_setmethods__["subscribe"] = _tbevent.event_handle_subscribe_set
__swig_getmethods__["subscribe"] = _tbevent.event_handle_subscribe_get
if _newclass:subscribe = property(_tbevent.event_handle_subscribe_get, _tbevent.event_handle_subscribe_set)
if _newclass:subscribe = _swig_property(_tbevent.event_handle_subscribe_get, _tbevent.event_handle_subscribe_set)
__swig_setmethods__["unsubscribe"] = _tbevent.event_handle_unsubscribe_set
__swig_getmethods__["unsubscribe"] = _tbevent.event_handle_unsubscribe_get
if _newclass:unsubscribe = property(_tbevent.event_handle_unsubscribe_get, _tbevent.event_handle_unsubscribe_set)
def __init__(self, *args):
this = _tbevent.new_event_handle(*args)
if _newclass:unsubscribe = _swig_property(_tbevent.event_handle_unsubscribe_get, _tbevent.event_handle_unsubscribe_set)
def __init__(self):
this = _tbevent.new_event_handle()
try: self.this.append(this)
except: self.this = this
__swig_destroy__ = _tbevent.delete_event_handle
......@@ -99,12 +124,12 @@ class event_notification(_object):
__repr__ = _swig_repr
__swig_setmethods__["pubsub_notification"] = _tbevent.event_notification_pubsub_notification_set
__swig_getmethods__["pubsub_notification"] = _tbevent.event_notification_pubsub_notification_get
if _newclass:pubsub_notification = property(_tbevent.event_notification_pubsub_notification_get, _tbevent.event_notification_pubsub_notification_set)
if _newclass:pubsub_notification = _swig_property(_tbevent.event_notification_pubsub_notification_get, _tbevent.event_notification_pubsub_notification_set)
__swig_setmethods__["has_hmac"] = _tbevent.event_notification_has_hmac_set
__swig_getmethods__["has_hmac"] = _tbevent.event_notification_has_hmac_get
if _newclass:has_hmac = property(_tbevent.event_notification_has_hmac_get, _tbevent.event_notification_has_hmac_set)
def __init__(self, *args):
this = _tbevent.new_event_notification(*args)
if _newclass:has_hmac = _swig_property(_tbevent.event_notification_has_hmac_get, _tbevent.event_notification_has_hmac_set)
def __init__(self):
this = _tbevent.new_event_notification()
try: self.this.append(this)
except: self.this = this
__swig_destroy__ = _tbevent.delete_event_notification
......@@ -120,33 +145,33 @@ class address_tuple(_object):
__repr__ = _swig_repr
__swig_setmethods__["site"] = _tbevent.address_tuple_site_set
__swig_getmethods__["site"] = _tbevent.address_tuple_site_get
if _newclass:site = property(_tbevent.address_tuple_site_get, _tbevent.address_tuple_site_set)
if _newclass:site = _swig_property(_tbevent.address_tuple_site_get, _tbevent.address_tuple_site_set)
__swig_setmethods__["expt"] = _tbevent.address_tuple_expt_set
__swig_getmethods__["expt"] = _tbevent.address_tuple_expt_get
if _newclass:expt = property(_tbevent.address_tuple_expt_get, _tbevent.address_tuple_expt_set)
if _newclass:expt = _swig_property(_tbevent.address_tuple_expt_get, _tbevent.address_tuple_expt_set)
__swig_setmethods__["group"] = _tbevent.address_tuple_group_set
__swig_getmethods__["group"] = _tbevent.address_tuple_group_get
if _newclass:group = property(_tbevent.address_tuple_group_get, _tbevent.address_tuple_group_set)
if _newclass:group = _swig_property(_tbevent.address_tuple_group_get, _tbevent.address_tuple_group_set)
__swig_setmethods__["host"] = _tbevent.address_tuple_host_set
__swig_getmethods__["host"] = _tbevent.address_tuple_host_get
if _newclass:host = property(_tbevent.address_tuple_host_get, _tbevent.address_tuple_host_set)
if _newclass:host = _swig_property(_tbevent.address_tuple_host_get, _tbevent.address_tuple_host_set)
__swig_setmethods__["objtype"] = _tbevent.address_tuple_objtype_set
__swig_getmethods__["objtype"] = _tbevent.address_tuple_objtype_get
if _newclass:objtype = property(_tbevent.address_tuple_objtype_get, _tbevent.address_tuple_objtype_set)
if _newclass:objtype = _swig_property(_tbevent.address_tuple_objtype_get, _tbevent.address_tuple_objtype_set)
__swig_setmethods__["objname"] = _tbevent.address_tuple_objname_set
__swig_getmethods__["objname"] = _tbevent.address_tuple_objname_get
if _newclass:objname = property(_tbevent.address_tuple_objname_get, _tbevent.address_tuple_objname_set)
if _newclass:objname = _swig_property(_tbevent.address_tuple_objname_get, _tbevent.address_tuple_objname_set)
__swig_setmethods__["eventtype"] = _tbevent.address_tuple_eventtype_set
__swig_getmethods__["eventtype"] = _tbevent.address_tuple_eventtype_get
if _newclass:eventtype = property(_tbevent.address_tuple_eventtype_get, _tbevent.address_tuple_eventtype_set)
if _newclass:eventtype = _swig_property(_tbevent.address_tuple_eventtype_get, _tbevent.address_tuple_eventtype_set)
__swig_setmethods__["scheduler"] = _tbevent.address_tuple_scheduler_set
__swig_getmethods__["scheduler"] = _tbevent.address_tuple_scheduler_get
if _newclass:scheduler = property(_tbevent.address_tuple_scheduler_get, _tbevent.address_tuple_scheduler_set)
if _newclass:scheduler = _swig_property(_tbevent.address_tuple_scheduler_get, _tbevent.address_tuple_scheduler_set)
__swig_setmethods__["timeline"] = _tbevent.address_tuple_timeline_set
__swig_getmethods__["timeline"] = _tbevent.address_tuple_timeline_get
if _newclass:timeline = property(_tbevent.address_tuple_timeline_get, _tbevent.address_tuple_timeline_set)
def __init__(self, *args):
this = _tbevent.new_address_tuple(*args)
if _newclass:timeline = _swig_property(_tbevent.address_tuple_timeline_get, _tbevent.address_tuple_timeline_set)
def __init__(self):
this = _tbevent.new_address_tuple()
try: self.this.append(this)
except: self.this = this
__swig_destroy__ = _tbevent.delete_address_tuple
......@@ -157,7 +182,13 @@ address_tuple_swigregister(address_tuple)
ADDRESSTUPLE_ALL = _tbevent.ADDRESSTUPLE_ALL
OBJECTTYPE_TESTBED = _tbevent.OBJECTTYPE_TESTBED
OBJECTTYPE_TRAFGEN = _tbevent.OBJECTTYPE_TRAFGEN
def address_tuple_alloc():
return _tbevent.address_tuple_alloc()
address_tuple_alloc = _tbevent.address_tuple_alloc
def address_tuple_free(*args):
return _tbevent.address_tuple_free(*args)
address_tuple_free = _tbevent.address_tuple_free
EVENT_HOST_ANY = _tbevent.EVENT_HOST_ANY
EVENT_NULL = _tbevent.EVENT_NULL
......@@ -165,41 +196,157 @@ EVENT_TEST = _tbevent.EVENT_TEST
EVENT_SCHEDULE = _tbevent.EVENT_SCHEDULE
EVENT_TRAFGEN_START = _tbevent.EVENT_TRAFGEN_START
EVENT_TRAFGEN_STOP = _tbevent.EVENT_TRAFGEN_STOP
def event_register(*args):
return _tbevent.event_register(*args)
event_register = _tbevent.event_register
def event_register_withkeyfile(*args):
return _tbevent.event_register_withkeyfile(*args)
event_register_withkeyfile = _tbevent.event_register_withkeyfile
def event_register_withkeydata(*args):
return _tbevent.event_register_withkeydata(*args)
event_register_withkeydata = _tbevent.event_register_withkeydata
def event_register_withkeyfile_withretry(*args):
return _tbevent.event_register_withkeyfile_withretry(*args)
event_register_withkeyfile_withretry = _tbevent.event_register_withkeyfile_withretry
def event_register_withkeydata_withretry(*args):
return _tbevent.event_register_withkeydata_withretry(*args)
event_register_withkeydata_withretry = _tbevent.event_register_withkeydata_withretry
def event_unregister(*args):
return _tbevent.event_unregister(*args)
event_unregister = _tbevent.event_unregister
def c_event_poll(*args):
return _tbevent.c_event_poll(*args)
c_event_poll = _tbevent.c_event_poll
def c_event_poll_blocking(*args):
return _tbevent.c_event_poll_blocking(*args)
c_event_poll_blocking = _tbevent.c_event_poll_blocking
def dont_use_this_function_because_it_does_not_work(*args):
return _tbevent.dont_use_this_function_because_it_does_not_work(*args)
dont_use_this_function_because_it_does_not_work = _tbevent.dont_use_this_function_because_it_does_not_work
def event_stop_main(*args):
return _tbevent.event_stop_main(*args)
event_stop_main = _tbevent.event_stop_main
def event_notify(*args):
return _tbevent.event_notify(*args)
event_notify = _tbevent.event_notify
def event_schedule(*args):
return _tbevent.event_schedule(*args)
event_schedule = _tbevent.event_schedule
def event_notification_alloc(*args):
return _tbevent.event_notification_alloc(*args)
event_notification_alloc = _tbevent.event_notification_alloc
def event_notification_free(*args):
return _tbevent.event_notification_free(*args)
event_notification_free = _tbevent.event_notification_free
def event_notification_clone(*args):
return _tbevent.event_notification_clone(*args)
event_notification_clone = _tbevent.event_notification_clone
def event_notification_get_double(*args):
return _tbevent.event_notification_get_double(*args)
event_notification_get_double = _tbevent.event_notification_get_double
def event_notification_get_int32(*args):
return _tbevent.event_notification_get_int32(*args)
event_notification_get_int32 = _tbevent.event_notification_get_int32
def event_notification_get_int64(*args):
return _tbevent.event_notification_get_int64(*args)
event_notification_get_int64 = _tbevent.event_notification_get_int64
def event_notification_get_opaque_length(*args):
return _tbevent.event_notification_get_opaque_length(*args)
event_notification_get_opaque_length = _tbevent.event_notification_get_opaque_length
def event_notification_get_string_length(*args):
return _tbevent.event_notification_get_string_length(*args)
event_notification_get_string_length = _tbevent.event_notification_get_string_length
def event_notification_get_opaque(*args):
return _tbevent.event_notification_get_opaque(*args)
event_notification_get_opaque = _tbevent.event_notification_get_opaque
def c_event_notification_get_string(*args):
return _tbevent.c_event_notification_get_string(*args)
c_event_notification_get_string = _tbevent.c_event_notification_get_string
def event_notification_put_double(*args):
return _tbevent.event_notification_put_double(*args)
event_notification_put_double = _tbevent.event_notification_put_double
def event_notification_put_int32(*args):
return _tbevent.event_notification_put_int32(*args)
event_notification_put_int32 = _tbevent.event_notification_put_int32
def event_notification_put_int64(*args):
return _tbevent.event_notification_put_int64(*args)
event_notification_put_int64 = _tbevent.event_notification_put_int64
def event_notification_put_opaque(*args):
return _tbevent.event_notification_put_opaque(*args)
event_notification_put_opaque = _tbevent.event_notification_put_opaque
def event_notification_put_string(*args):
return _tbevent.event_notification_put_string(*args)
event_notification_put_string = _tbevent.event_notification_put_string
def event_notification_remove(*args):
return _tbevent.event_notification_remove(*args)
event_notification_remove = _tbevent.event_notification_remove
def c_event_subscribe(*args):
return _tbevent.c_event_subscribe(*args)
c_event_subscribe = _tbevent.c_event_subscribe
def event_subscribe_auth(*args):
return _tbevent.event_subscribe_auth(*args)
event_subscribe_auth = _tbevent.event_subscribe_auth
def event_async_subscribe(*args):
return _tbevent.event_async_subscribe(*args)
event_async_subscribe = _tbevent.event_async_subscribe
def event_unsubscribe(*args):
return _tbevent.event_unsubscribe(*args)
event_unsubscribe = _tbevent.event_unsubscribe
def event_async_unsubscribe(*args):
return _tbevent.event_async_unsubscribe(*args)
event_async_unsubscribe = _tbevent.event_async_unsubscribe
def event_notification_insert_hmac(*args):
return _tbevent.event_notification_insert_hmac(*args)
event_notification_insert_hmac = _tbevent.event_notification_insert_hmac
def event_set_idle_period(*args):
return _tbevent.event_set_idle_period(*args)
event_set_idle_period = _tbevent.event_set_idle_period
def event_set_failover(*args):
return _tbevent.event_set_failover(*args)
event_set_failover = _tbevent.event_set_failover
def event_arg_get(*args):
return _tbevent.event_arg_get(*args)
event_arg_get = _tbevent.event_arg_get
def event_arg_dup(*args):
return _tbevent.event_arg_dup(*args)
event_arg_dup = _tbevent.event_arg_dup
EA_TAG_DONE = _tbevent.EA_TAG_DONE
EA_Site = _tbevent.EA_Site
......@@ -214,12 +361,33 @@ EA_ArgInteger = _tbevent.EA_ArgInteger
EA_ArgFloat = _tbevent.EA_ArgFloat
EA_ArgString = _tbevent.EA_ArgString
EA_When = _tbevent.EA_When
def event_notification_create_v(*args):
return _tbevent.event_notification_create_v(*args)
event_notification_create_v = _tbevent.event_notification_create_v
def event_notification_create(*args):
return _tbevent.event_notification_create(*args)
event_notification_create = _tbevent.event_notification_create