Commit a9dc0086 authored by Mike Hibler's avatar Mike Hibler

Merge remote branch 'origin/tpm-tmcd' into tpm-tmcd

Conflicts:
	db/libdb.pm.in
	event/stated/stated.in
parents 1f6ba160 f4cca17f
event/trafgen/tg2.0
.merge-build
...@@ -117,3 +117,25 @@ check: $(TESTS) ...@@ -117,3 +117,25 @@ check: $(TESTS)
fi \ fi \
done done
endif endif
ifeq ($(MERGE_BUILD),1)
.PRECIOUS: ${SRCDIR}/*
#
# I really want to say something like:
# ${TESTBED_SRCDIR}/.merged: $(wildcard ${OBJDIR}/${MERGE_BUILD_SANDBOX}/${SUBDIR}/*)
# but that causes problems if one the prereq. has a rule for it (such
# as when both GNUmakefile and GNUmakefile.in exist in the source tree),
# thus I do the equivalent manually
#
newest=$(shell ls -rtd "${OBJDIR}/${MERGE_BUILD_SANDBOX}/${SUBDIR}/"* "${TESTBED_SRCDIR}/.merged" | tail -n 1)
ifneq ($(newest),${TESTBED_SRCDIR}/.merged)
${TESTBED_SRCDIR}/.merged:
cd ${TESTBED_SRCDIR} && utils/merge-build sync
.PHONY: ${TESTBED_SRCDIR}/.merged
else
${TESTBED_SRCDIR}/.merged:
endif
${SRCDIR}/*: ${TESTBED_SRCDIR}/.merged
endif
...@@ -91,4 +91,7 @@ STANDALONE_CLEARINGHOUSE = @STANDALONE_CLEARINGHOUSE@ ...@@ -91,4 +91,7 @@ STANDALONE_CLEARINGHOUSE = @STANDALONE_CLEARINGHOUSE@
NODE_USAGE_SUPPORT = @NODE_USAGE_SUPPORT@ NODE_USAGE_SUPPORT = @NODE_USAGE_SUPPORT@
MERGE_BUILD = @MERGE_BUILD@
MERGE_BUILD_SANDBOX = @MERGE_BUILD_SANDBOX@
EXP_VIS_SUPPORT = @EXP_VIS_SUPPORT@ EXP_VIS_SUPPORT = @EXP_VIS_SUPPORT@
This diff is collapsed.
#!/usr/bin/perl -wT #!/usr/bin/perl -wT
# #
# EMULAB-COPYRIGHT # EMULAB-COPYRIGHT
# Copyright (c) 2000-2008 University of Utah and the Flux Group. # Copyright (c) 2000-2010 University of Utah and the Flux Group.
# All rights reserved. # All rights reserved.
# #
use English; use English;
...@@ -72,6 +72,7 @@ use lib "@prefix@/lib"; ...@@ -72,6 +72,7 @@ use lib "@prefix@/lib";
use libaudit; use libaudit;
use libdb; use libdb;
use libtestbed; use libtestbed;
use User;
# #
# Function prototypes # Function prototypes
......
...@@ -158,6 +158,10 @@ if (@ARGV < 1) { ...@@ -158,6 +158,10 @@ if (@ARGV < 1) {
my $orgunit = shift(@ARGV); my $orgunit = shift(@ARGV);
my $uuid = (@ARGV ? shift(@ARGV) : undef); my $uuid = (@ARGV ? shift(@ARGV) : undef);
# Moved before uuid generation. Might be a race, might not.
TBScriptLock("mkusercert") == 0 or
fatal("Could not get the lock!");
# Generate/confirm uuid # Generate/confirm uuid
if (!defined($uuid)) { if (!defined($uuid)) {
$uuid = NewUUID(); $uuid = NewUUID();
...@@ -176,9 +180,6 @@ if (!defined($email)) { ...@@ -176,9 +180,6 @@ if (!defined($email)) {
chdir("$WORKDIR") or chdir("$WORKDIR") or
fatal("Could not chdir to $WORKDIR: $!"); fatal("Could not chdir to $WORKDIR: $!");
TBScriptLock("mkusercert") == 0 or
fatal("Could not get the lock!");
# #
# Need an index file, which is the openssl version of the DB. # Need an index file, which is the openssl version of the DB.
# #
......
...@@ -584,8 +584,8 @@ bool populate_links(DOMElement *root, tb_pgraph &pg, tb_sgraph &sg, ...@@ -584,8 +584,8 @@ bool populate_links(DOMElement *root, tb_pgraph &pg, tb_sgraph &sg,
tb_plink *phys_link = tb_plink *phys_link =
new tb_plink(componentId.c_str(), new tb_plink(componentId.c_str(),
tb_plink::PLINK_NORMAL, str_first_type.c_str(), tb_plink::PLINK_NORMAL, str_first_type.c_str(),
srcMac.c_str(), dstMac.c_str(), src_pnode->name, srcMac.c_str(), shortNames[src_iface],
shortNames[src_iface], shortNames[dst_iface]); dst_pnode->name, dstMac.c_str(), shortNames[dst_iface]);
phys_link->delay_info.bandwidth = bandwidth; phys_link->delay_info.bandwidth = bandwidth;
phys_link->delay_info.delay = latency; phys_link->delay_info.delay = latency;
......
...@@ -269,8 +269,8 @@ int parse_ptop(tb_pgraph &pg, tb_sgraph &sg, istream& input) ...@@ -269,8 +269,8 @@ int parse_ptop(tb_pgraph &pg, tb_sgraph &sg, istream& input)
for (int cur = 0;cur<num;++cur) { for (int cur = 0;cur<num;++cur) {
pedge pe = (add_edge(srcv,dstv,pg)).first; pedge pe = (add_edge(srcv,dstv,pg)).first;
tb_plink *pl = new tb_plink *pl = new
tb_plink(name,tb_plink::PLINK_NORMAL,link_type,srcmac,dstmac, tb_plink(name,tb_plink::PLINK_NORMAL,link_type,srcnode->name,srcmac,
srciface,dstiface); srciface,dstnode->name,dstmac,dstiface);
put(pedge_pmap,pe,pl); put(pedge_pmap,pe,pl);
pl->delay_info.bandwidth = ibw; pl->delay_info.bandwidth = ibw;
pl->delay_info.delay = idelay; pl->delay_info.delay = idelay;
......
...@@ -407,8 +407,9 @@ bool populate_links(DOMElement *root, tb_pgraph &pg, tb_sgraph &sg) { ...@@ -407,8 +407,9 @@ bool populate_links(DOMElement *root, tb_pgraph &pg, tb_sgraph &sg) {
// other stuff if I remove them... bummer! // other stuff if I remove them... bummer!
tb_plink *phys_link = tb_plink *phys_link =
new tb_plink(name.c(), tb_plink::PLINK_NORMAL, str_first_type, new tb_plink(name.c(), tb_plink::PLINK_NORMAL, str_first_type,
"(null)", "(null)", src_iface.c(), dst_iface.c()); src_pnode->name, "(null)", src_iface.c(),
dst_pnode->name, "(null)", dst_iface.c());
phys_link->delay_info.bandwidth = bandwidth.i(); phys_link->delay_info.bandwidth = bandwidth.i();
phys_link->delay_info.delay = latency.i(); phys_link->delay_info.delay = latency.i();
phys_link->delay_info.loss = packet_loss.d(); phys_link->delay_info.loss = packet_loss.d();
......
...@@ -360,10 +360,11 @@ public: ...@@ -360,10 +360,11 @@ public:
typedef enum {PLINK_NORMAL,PLINK_INTERSWITCH,PLINK_LAN} plinkType; typedef enum {PLINK_NORMAL,PLINK_INTERSWITCH,PLINK_LAN} plinkType;
typedef hash_set<fstring> type_set; typedef hash_set<fstring> type_set;
tb_plink(fstring _name, plinkType _is_type, fstring _type, fstring _srcmac, fstring tb_plink(fstring _name, plinkType _is_type, fstring _type, fstring _srcnode, fstring _srcmac,
_dstmac, fstring _srciface, fstring _dstiface) fstring _srciface, fstring _dstnode, fstring _dstmac, fstring _dstiface)
: name(_name), srcmac(_srcmac), dstmac(_dstmac), is_type(_is_type), : name(_name), srcmac(_srcmac), dstmac(_dstmac), is_type(_is_type),
srciface(_srciface), dstiface(_dstiface), srciface(_srciface), dstiface(_dstiface),
srcnode(_srcnode), dstnode(_dstnode),
delay_info(), bw_used(0), emulated(0), nonemulated(0), delay_info(), bw_used(0), emulated(0), nonemulated(0),
penalty(0.0), fixends(false), current_endpoints(), current_count(0), penalty(0.0), fixends(false), current_endpoints(), current_count(0),
vedge_counts() { vedge_counts() {
...@@ -371,6 +372,7 @@ public: ...@@ -371,6 +372,7 @@ public:
} }
fstring name; // the name fstring name; // the name
fstring srcnode,dstnode; // source and destination node names
fstring srcmac,dstmac; // source and destination MAC addresses. fstring srcmac,dstmac; // source and destination MAC addresses.
fstring srciface, dstiface; // source and destination interface names fstring srciface, dstiface; // source and destination interface names
......
...@@ -60,7 +60,7 @@ extern tb_sgraph SG; // switch fabric ...@@ -60,7 +60,7 @@ extern tb_sgraph SG; // switch fabric
void score_link(pedge pe,vedge ve,tb_pnode *src_pnode,tb_pnode *dst_pnode); void score_link(pedge pe,vedge ve,tb_pnode *src_pnode,tb_pnode *dst_pnode);
void unscore_link(pedge pe,vedge ve,tb_pnode *src_pnode,tb_pnode *dst_pnode); void unscore_link(pedge pe,vedge ve,tb_pnode *src_pnode,tb_pnode *dst_pnode);
bool find_best_link(pvertex pv,pvertex switch_pv,tb_vlink *vlink, bool find_best_link(pvertex pv,pvertex switch_pv,tb_vlink *vlink,
pedge &out_edge, bool flipped, bool check_src_iface, pedge &out_edge, bool check_src_iface,
bool check_dst_iface); bool check_dst_iface);
int find_interswitch_path(pvertex src_pv,pvertex dest_pv, int find_interswitch_path(pvertex src_pv,pvertex dest_pv,
int bandwidth,pedge_path &out_path, int bandwidth,pedge_path &out_path,
...@@ -250,13 +250,25 @@ float find_link_resolutions(resolution_vector &resolutions, pvertex pv, ...@@ -250,13 +250,25 @@ float find_link_resolutions(resolution_vector &resolutions, pvertex pv,
pedge pe; pedge pe;
// Direct link (have to check both interfaces if they are fixed) // Direct link (have to check both interfaces if they are fixed)
if (find_best_link(dest_pv,pv,vlink,pe,flipped,true,true)) { if (find_best_link(dest_pv,pv,vlink,pe,true,true)) {
tb_link_info info(tb_link_info::LINK_DIRECT); tb_link_info info(tb_link_info::LINK_DIRECT);
info.plinks.push_back(pe); info.plinks.push_back(pe);
resolutions.push_back(info); resolutions.push_back(info);
total_weight += LINK_RESOLVE_DIRECT; total_weight += LINK_RESOLVE_DIRECT;
SDEBUG(cerr << " added a direct_link " << pe << endl); SDEBUG(cerr << " added a direct_link " << pe << endl);
} }
/*
* IMPORTANT NOTE ABOUT find_best_link -
*
* We have to tell it whether it is supposed to check the source of the
* vlink, the dest of the vlink, or both, for fixed interfaces. Of course, we
* only want to check the 'node' side, not the switch side, of interswitch
* and intraswitch paths. Of course, which end we're looking at depends on
* the order we're traversing the vlink - the flipped variable. This is why
* you see 'flipped' and '!flipped' passed to find_best_link() below.
*/
// Intraswitch link // Intraswitch link
pedge first,second; pedge first,second;
for (pvertex_set::iterator switch_it = pnode->switches.begin(); for (pvertex_set::iterator switch_it = pnode->switches.begin();
...@@ -291,9 +303,8 @@ float find_link_resolutions(resolution_vector &resolutions, pvertex pv, ...@@ -291,9 +303,8 @@ float find_link_resolutions(resolution_vector &resolutions, pvertex pv,
if (first_link) { if (first_link) {
SDEBUG(cerr << " intraswitch: finding first link" << endl;) SDEBUG(cerr << " intraswitch: finding first link" << endl;)
// Check only whether the source interface is fixed - this is the // See note above
// first link in a multi-hop path if (!find_best_link(pv,*switch_it,vlink,first,!flipped,flipped)) {
if (!find_best_link(pv,*switch_it,vlink,first,flipped,true,false)) {
SDEBUG(cerr << " intraswitch failed - no link first" << SDEBUG(cerr << " intraswitch failed - no link first" <<
endl;) endl;)
// No link to this switch // No link to this switch
...@@ -302,11 +313,9 @@ float find_link_resolutions(resolution_vector &resolutions, pvertex pv, ...@@ -302,11 +313,9 @@ float find_link_resolutions(resolution_vector &resolutions, pvertex pv,
} }
if (second_link) { if (second_link) {
// Check only whether the dest interface is fixed - this is the
// last link in a multi-hop path
SDEBUG(cerr << " intraswitch: finding second link (" << ")" << endl;) SDEBUG(cerr << " intraswitch: finding second link (" << ")" << endl;)
if (!find_best_link(dest_pv,*switch_it,vlink,second,flipped, // See note above
false,true)) { if (!find_best_link(dest_pv,*switch_it,vlink,second,flipped,!flipped)) {
// No link to this switch // No link to this switch
SDEBUG(cerr << " intraswitch failed - no link second" << SDEBUG(cerr << " intraswitch failed - no link second" <<
endl;) endl;)
...@@ -375,10 +384,8 @@ float find_link_resolutions(resolution_vector &resolutions, pvertex pv, ...@@ -375,10 +384,8 @@ float find_link_resolutions(resolution_vector &resolutions, pvertex pv,
// Get link objects // Get link objects
if (first_link) { if (first_link) {
// Check only whether the source interface is fixed - this is the // See note above
// first link in a multi-hop path if (!find_best_link(pv,*source_switch_it,vlink,first,!flipped,flipped)) {
if (!find_best_link(pv,*source_switch_it,vlink,first,flipped,
true,false)) {
// No link to this switch // No link to this switch
SDEBUG(cerr << " interswitch failed - no first link" SDEBUG(cerr << " interswitch failed - no first link"
<< endl;) << endl;)
...@@ -387,11 +394,9 @@ float find_link_resolutions(resolution_vector &resolutions, pvertex pv, ...@@ -387,11 +394,9 @@ float find_link_resolutions(resolution_vector &resolutions, pvertex pv,
} }
if (second_link) { if (second_link) {
// Check only whether the dest interface is fixed - this is the // See note above
// last link in a multi-hop path if (!find_best_link(dest_pv,*dest_switch_it,vlink,second,flipped,!flipped)) {
if (!find_best_link(dest_pv,*dest_switch_it,vlink,second,flipped, // No link to this switch
false,true)) {
// No link to tshis switch
SDEBUG(cerr << " interswitch failed - no second link" << endl;) SDEBUG(cerr << " interswitch failed - no second link" << endl;)
continue; continue;
} }
...@@ -521,6 +526,7 @@ void resolve_link(vvertex vv, pvertex pv, tb_vnode *vnode, tb_pnode *pnode, ...@@ -521,6 +526,7 @@ void resolve_link(vvertex vv, pvertex pv, tb_vnode *vnode, tb_pnode *pnode,
if (dest_vv == vv) { if (dest_vv == vv) {
dest_vv = source(edge,VG); dest_vv = source(edge,VG);
SDEBUG(cerr << " dest_vv is backwards" << endl);
} }
/* /*
...@@ -1482,8 +1488,19 @@ int add_node(vvertex vv,pvertex pv, bool deterministic, bool is_fixed, bool skip ...@@ -1482,8 +1488,19 @@ int add_node(vvertex vv,pvertex pv, bool deterministic, bool is_fixed, bool skip
return 0; return 0;
} }
/*
* Find the best link between two physical nodes, making sure it matches the
* requirements of the given vlink. Returns results in the out_edge parameter
* NOTE: assumes the caller has done enough bookkeeping to know whether the
* source and dest interfaces need to be checked for fixed interfaces - that
* is: check_src_iface should be set if:
* this is a direct link OR
* we're mapping the end of an inter or intra switch link that connects to
* the 'source' vnode in the vlink structure
* Similar rules apply to check_dst_iface
*/
bool find_best_link(pvertex pv,pvertex switch_pv,tb_vlink *vlink, bool find_best_link(pvertex pv,pvertex switch_pv,tb_vlink *vlink,
pedge &out_edge, bool flipped, bool check_src_iface, pedge &out_edge, bool check_src_iface,
bool check_dst_iface) bool check_dst_iface)
{ {
pvertex dest_pv; pvertex dest_pv;
...@@ -1506,58 +1523,62 @@ bool find_best_link(pvertex pv,pvertex switch_pv,tb_vlink *vlink, ...@@ -1506,58 +1523,62 @@ bool find_best_link(pvertex pv,pvertex switch_pv,tb_vlink *vlink,
continue; continue;
} }
// XXX: Not 100% sure it's better to do this inside find_best_link rather
// than in the caller
// if (flipped) {
// // If the endpoints are flipped, then we need to flip our notion of
// // which ones need to be compared.
// bool tmp = check_src_iface;
// check_src_iface = check_dst_iface;
// check_dst_iface = tmp;
// SDEBUG(cerr << " find_best_link: flipping interface comparisons" << endl;)
// }
SDEBUG(cerr << " find_best_link: fix_src_iface = " << SDEBUG(cerr << " find_best_link: fix_src_iface = " <<
vlink->fix_src_iface << " check_src_iface = " << check_src_iface vlink->fix_src_iface << " check_src_iface = " << check_src_iface
<< " fix_dst_iface = " << vlink->fix_dst_iface << " fix_dst_iface = " << vlink->fix_dst_iface
<< " check_dst_iface = " << check_dst_iface << " check_dst_iface = " << check_dst_iface << endl;)
<< " flipped = " << flipped << endl);
// Whether we check the 'source' or 'destination' on the vlink against
// the phyisical link's source interface depends on whether the
// interface order in the in the pedge matches the interface order in
// the vlink
bool plink_order_reversed;
tb_vnode *src_vnode = get(vvertex_pmap,vlink->src);
tb_pnode *src_pnode = get(pvertex_pmap,src_vnode->assignment);
if (src_pnode->name != plink->srcnode) {
SDEBUG(cerr << " find_best_link: plink and vlink in " <<
"different order (" << src_pnode->name << " != " <<
plink->srcnode << ")" << endl;)
plink_order_reversed = true;
} else {
SDEBUG(cerr << " find_best_link: plink and vlink in " <<
"same order (" << src_pnode->name << " == " <<
plink->srcnode << ")" << endl;)
plink_order_reversed = false;
}
// If the vlink has a fixed source interface, and it doesn't match // If the vlink has a fixed source interface, and it doesn't match
// this plink, skip it // this plink, skip it
if (vlink->fix_src_iface && check_src_iface) { if (vlink->fix_src_iface && check_src_iface) {
// Whether we check the 'source' or 'destination' on the vlink against // The interface name we compare to on the plink depends on wether it
// the phyisical link's source interface depends on whether we're // goes in the same 'direction' as the vlink
// traversing the link if forward or reverse (flipped) order fstring compare_iface = (plink_order_reversed? plink->dstiface : plink->srciface);
// fstring compare_iface = vlink->src_iface; if (vlink->src_iface != compare_iface) {
fstring compare_iface = (flipped? vlink->dst_iface : vlink->src_iface);
if (plink->srciface != compare_iface) {
SDEBUG(cerr << " find_best_link (" << vlink->name << SDEBUG(cerr << " find_best_link (" << vlink->name <<
"): Fix source: " << plink->srciface << " != " << "): Fix source: " << vlink->src_iface << " != " <<
compare_iface << endl); compare_iface << endl);
continue; continue;
} else { } else {
SDEBUG(cerr << " find_best_link (" << vlink->name << SDEBUG(cerr << " find_best_link (" << vlink->name <<
"): Fix source: " << plink->srciface << " == " << "): Fix source: " << vlink->src_iface << " == " <<
compare_iface << endl); compare_iface << endl);
} }
} }
// Same for destination // Same for destination
// Yes, this really is srciface
// XXX: This only works because we always have the node as the 'source'
// of a plink! Shouldn't depend on this!
if (vlink->fix_dst_iface && check_dst_iface) { if (vlink->fix_dst_iface && check_dst_iface) {
// fstring compare_iface = vlink->dst_iface; // The interface name we compare to on the plink depends on wether it
fstring compare_iface = (flipped? vlink->src_iface : vlink->dst_iface); // goes in the same 'direction' as the vlink
if (plink->srciface != compare_iface) { fstring compare_iface = (plink_order_reversed? plink->srciface : plink->dstiface);
if (vlink->dst_iface != compare_iface) {
SDEBUG(cerr << " find_best_link (" << vlink->name << SDEBUG(cerr << " find_best_link (" << vlink->name <<
"): Fix dst: " << plink->srciface << " != " << "): Fix dst: " << vlink->dst_iface << " != " <<
compare_iface << endl); compare_iface << endl);
continue; continue;
} else { } else {
SDEBUG(cerr << " find_best_link (" << vlink->name << SDEBUG(cerr << " find_best_link (" << vlink->name <<
"): Fix dst: " << plink->srciface << " == " << "): Fix dst: " << vlink->dst_iface << " == " <<
compare_iface << endl); compare_iface << endl);
} }
} }
......
...@@ -51,7 +51,9 @@ use libdb; ...@@ -51,7 +51,9 @@ use libdb;
use libtestbed; use libtestbed;
use User; use User;
use Project; use Project;
use OSinfo;
use Image; use Image;
use Node;
# Protos # Protos
sub fatal($); sub fatal($);
......
...@@ -52,6 +52,8 @@ use libtestbed; ...@@ -52,6 +52,8 @@ use libtestbed;
use User; use User;
use Project; use Project;
use Image; use Image;
use OSinfo;
use Node;
# Protos # Protos
sub fatal($); sub fatal($);
......
#!/usr/bin/perl -wT #!/usr/bin/perl -wT
# #
# EMULAB-COPYRIGHT # EMULAB-COPYRIGHT
# Copyright (c) 2007, 2008 University of Utah and the Flux Group. # Copyright (c) 2007-2010 University of Utah and the Flux Group.
# All rights reserved. # All rights reserved.
# #
use English; use English;
...@@ -53,6 +53,7 @@ $| = 1; ...@@ -53,6 +53,7 @@ $| = 1;
use lib "@prefix@/lib"; use lib "@prefix@/lib";
use libdb; use libdb;
use libtestbed; use libtestbed;
use User;
# #
# We don't want to run this script unless its the real version. # We don't want to run this script unless its the real version.
......
...@@ -44,6 +44,8 @@ ...@@ -44,6 +44,8 @@
#undef ISOLATEADMINS #undef ISOLATEADMINS
#undef DYNAMICROOTPASSWORDS #undef DYNAMICROOTPASSWORDS
#undef TPM #undef TPM
#undef NOSHAREDFS
#undef NFSRACY
#undef HAVE_SRANDOMDEV #undef HAVE_SRANDOMDEV
......
This diff is collapsed.
...@@ -58,7 +58,7 @@ AC_SUBST(PATH) ...@@ -58,7 +58,7 @@ AC_SUBST(PATH)
CPPFLAGS="-I/usr/local/include" CPPFLAGS="-I/usr/local/include"
# BEGIN Python detection. # BEGIN Python detection.
AC_PATH_PROGS(PYTHON, python python2.4 python2.3 python2.2) AC_PATH_PROGS(PYTHON, python python2.6 python2.5 python2.4 python2.3 python2.2)
if test x"$PYTHON" = x""; then if test x"$PYTHON" = x""; then
AC_MSG_ERROR([python not detected]) AC_MSG_ERROR([python not detected])
...@@ -219,6 +219,8 @@ AC_SUBST(GMAP_API_KEY) ...@@ -219,6 +219,8 @@ AC_SUBST(GMAP_API_KEY)
AC_SUBST(NODE_USAGE_SUPPORT) AC_SUBST(NODE_USAGE_SUPPORT)
AC_SUBST(NOSTACKMIB) AC_SUBST(NOSTACKMIB)
AC_SUBST(EXP_VIS_SUPPORT) AC_SUBST(EXP_VIS_SUPPORT)
AC_SUBST(NOSHAREDFS)
AC_SUBST(SELFLOADER_DATA)
# #
# Offer both versions of the email addresses that have the @ escaped # Offer both versions of the email addresses that have the @ escaped
...@@ -307,6 +309,9 @@ STANDALONE_CLEARINGHOUSE=0 ...@@ -307,6 +309,9 @@ STANDALONE_CLEARINGHOUSE=0
NODE_USAGE_SUPPORT=0 NODE_USAGE_SUPPORT=0
EXP_VIS_SUPPORT=0 EXP_VIS_SUPPORT=0
NOSTACKMIB=0 NOSTACKMIB=0
NOSHAREDFS=0
NFSRACY=1
SELFLOADER_DATA="__DATA__"
# #
# XXX You really don't want to change these! # XXX You really don't want to change these!
...@@ -423,7 +428,12 @@ fi ...@@ -423,7 +428,12 @@ fi