diff --git a/xCAT-server/lib/perl/xCAT/Template.pm b/xCAT-server/lib/perl/xCAT/Template.pm
index 4a0343657..6966970fd 100644
--- a/xCAT-server/lib/perl/xCAT/Template.pm
+++ b/xCAT-server/lib/perl/xCAT/Template.pm
@@ -218,6 +218,7 @@ sub subvars {
$inc =~ s/#INCLUDE:([^#^\n]+)#/includefile($1, 0, 0)/eg;
$inc =~ s/#WINTIMEZONE#/xCAT::TZUtils::get_wintimezone()/eg;
$inc =~ s/#WINPRODKEY:([^#]+)#/get_win_prodkey($1)/eg;
+ $inc =~ s/#WINNETCFG#/windows_net_cfg()/eg;
$inc =~ s/#WINADJOIN#/windows_join_data()/eg;
$inc =~ s/#WINDNSCFG#/windows_dns_cfg()/eg;
$inc =~ s/#WINACCOUNTDATA#/windows_account_data()/eg;
@@ -334,6 +335,25 @@ sub windows_account_data {
$useraccountxml.="\r\n\r\nAdministrators\r\nDomain Admins\r\n\r\n".$domain."\r\n\r\n\r\n";
return $useraccountxml;
}
+sub windows_net_cfg {
+ if ($::XCATSITEVALS{managedaddressmode} =~ /static/) { return ""; }
+ unless ($::XCATSITEVALS{managedaddressmode} =~ /autoula/) {
+ return ""; #windows default behavior
+ }
+ #autoula,
+ my $hoststab;
+ my $mactab = xCAT::Table->new('mac',-create=>0);
+ unless ($mactab) { die "mac table should always exist prior to template processing when doing autoula"; }
+ my $ent = $mactab->getNodeAttribs($node,['mac'],prefetchcache=>1);
+ unless ($ent and $ent->{mac}) { die "missing mac data for $node"; }
+ my $suffix = $ent->{mac};
+ my $mac = $suffix;
+ $suffix = lc($suffix);
+ unless ($hoststab) { $hoststab = xCAT::Table->new('hosts',-create=>1); }
+ my $ulaaddr = autoulaaddress($suffix);
+ $hoststab->setNodeAttribs($node,{ip=>$ulaaddr});
+ return ''."\r\n\r\n$mac\r\n\r\n$ulaaddr/64\r\n\r\n\r\n\r\n\r\n";
+}
sub windows_dns_cfg {
my $domain;
my $doment;
@@ -495,7 +515,7 @@ sub kickstartnetwork {
my $hoststab;
my $mactab = xCAT::Table->new('mac',-create=>0);
unless ($mactab) { die "mac table should always exist prior to template processing when doing autoula"; }
- my $ent = $mactab->getNodeAttribs($node,['mac']);
+ my $ent = $mactab->getNodeAttribs($node,['mac'],prefetchcache=>1);
unless ($ent and $ent->{mac}) { die "missing mac data for $node"; }
my $suffix = $ent->{mac};
$suffix = lc($suffix);