diff --git a/xCAT/mkrpm b/xCAT/mkrpm
index af719c69d..5b27870d1 100755
--- a/xCAT/mkrpm
+++ b/xCAT/mkrpm
@@ -8,6 +8,7 @@ then
cd `dirname $0`
echo '.svn' > /tmp/xcat-excludes
+ echo 'upflag' >> /tmp/xcat-excludes
tar -X /tmp/xcat-excludes -cf /opt/freeware/src/packages/SOURCES/postscripts.tar postscripts LICENSE.html
gzip -f /opt/freeware/src/packages/SOURCES/postscripts.tar
diff --git a/xCAT/postscripts/upflag/upflag.sln b/xCAT/postscripts/upflag/upflag.sln
new file mode 100644
index 000000000..69ddb7ee0
--- /dev/null
+++ b/xCAT/postscripts/upflag/upflag.sln
@@ -0,0 +1,26 @@
+
+Microsoft Visual Studio Solution File, Format Version 10.00
+# Visual Studio 2008
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "upflag", "upflag\upflag.vcproj", "{465C9528-34DA-400A-8D4E-82263BE95BBC}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Debug|x64 = Debug|x64
+ Release|Win32 = Release|Win32
+ Release|x64 = Release|x64
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {465C9528-34DA-400A-8D4E-82263BE95BBC}.Debug|Win32.ActiveCfg = Debug|Win32
+ {465C9528-34DA-400A-8D4E-82263BE95BBC}.Debug|Win32.Build.0 = Debug|Win32
+ {465C9528-34DA-400A-8D4E-82263BE95BBC}.Debug|x64.ActiveCfg = Debug|x64
+ {465C9528-34DA-400A-8D4E-82263BE95BBC}.Debug|x64.Build.0 = Debug|x64
+ {465C9528-34DA-400A-8D4E-82263BE95BBC}.Release|Win32.ActiveCfg = Release|Win32
+ {465C9528-34DA-400A-8D4E-82263BE95BBC}.Release|Win32.Build.0 = Release|Win32
+ {465C9528-34DA-400A-8D4E-82263BE95BBC}.Release|x64.ActiveCfg = Release|x64
+ {465C9528-34DA-400A-8D4E-82263BE95BBC}.Release|x64.Build.0 = Release|x64
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/xCAT/postscripts/upflag/upflag.suo b/xCAT/postscripts/upflag/upflag.suo
new file mode 100644
index 000000000..d4e852ec6
Binary files /dev/null and b/xCAT/postscripts/upflag/upflag.suo differ
diff --git a/xCAT/postscripts/upflag/upflag/Release/BuildLog.htm b/xCAT/postscripts/upflag/upflag/Release/BuildLog.htm
new file mode 100644
index 000000000..008e29b67
Binary files /dev/null and b/xCAT/postscripts/upflag/upflag/Release/BuildLog.htm differ
diff --git a/xCAT/postscripts/upflag/upflag/Release/mt.dep b/xCAT/postscripts/upflag/upflag/Release/mt.dep
new file mode 100644
index 000000000..512ecb03d
--- /dev/null
+++ b/xCAT/postscripts/upflag/upflag/Release/mt.dep
@@ -0,0 +1 @@
+Manifest resource last updated at 15:51:24.03 on Fri 06/20/2008
diff --git a/xCAT/postscripts/upflag/upflag/Release/upflag.exe.intermediate.manifest b/xCAT/postscripts/upflag/upflag/Release/upflag.exe.intermediate.manifest
new file mode 100644
index 000000000..1c06b6190
--- /dev/null
+++ b/xCAT/postscripts/upflag/upflag/Release/upflag.exe.intermediate.manifest
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/xCAT/postscripts/upflag/upflag/Release/upflag.obj b/xCAT/postscripts/upflag/upflag/Release/upflag.obj
new file mode 100644
index 000000000..251c1bb63
Binary files /dev/null and b/xCAT/postscripts/upflag/upflag/Release/upflag.obj differ
diff --git a/xCAT/postscripts/upflag/upflag/Release/vc90.idb b/xCAT/postscripts/upflag/upflag/Release/vc90.idb
new file mode 100644
index 000000000..57360d6be
Binary files /dev/null and b/xCAT/postscripts/upflag/upflag/Release/vc90.idb differ
diff --git a/xCAT/postscripts/upflag/upflag/Release/vc90.pdb b/xCAT/postscripts/upflag/upflag/Release/vc90.pdb
new file mode 100644
index 000000000..af424ba28
Binary files /dev/null and b/xCAT/postscripts/upflag/upflag/Release/vc90.pdb differ
diff --git a/xCAT/postscripts/upflag/upflag/upflag.cpp b/xCAT/postscripts/upflag/upflag/upflag.cpp
new file mode 100644
index 000000000..b32ccc152
--- /dev/null
+++ b/xCAT/postscripts/upflag/upflag/upflag.cpp
@@ -0,0 +1,126 @@
+
+#include "winsock2.h"
+#include "windows.h"
+#include "stdio.h"
+
+void Usage()
+{
+printf("upflag Ver 0.0.0.1\n");
+printf("\nusage: upflag [hostname][port_number][test_to_send]\n");
+
+printf("\nExamples:");
+printf("\nupflag some_hostname 5000 ready");
+printf("\nupflag some_hostname 5000 \"I am ready\"");
+printf("\nupflag 192.168.0.1 5000 ready\n\n");
+
+}
+
+int SendMsg(SOCKET conn_socket, TCHAR *szMsg)
+{
+TCHAR szIncomingMsg[255];
+
+szMsg[lstrlen(szMsg)]= '\n\0';
+
+recv(conn_socket, szIncomingMsg, sizeof(szIncomingMsg),0);
+
+printf("\nrecv %s Len: %d ", szIncomingMsg, (int)strlen(szIncomingMsg));
+
+if(strstr(strlwr(szIncomingMsg), "ready") == NULL)
+ return 1;
+
+send(conn_socket, (const char *)szMsg, (int)strlen((const char *)szMsg), 0);
+
+lstrcpy(szIncomingMsg, "");
+recv(conn_socket, szIncomingMsg, sizeof(szIncomingMsg),0);
+
+printf("\nsend %s Len: %d ", szMsg, strlen((const char *)szMsg));
+printf("\nrecv %s Len: %d ", szIncomingMsg, (int)strlen(szIncomingMsg));
+
+if(strstr(strlwr(szIncomingMsg), "done") != NULL)
+ return 0;
+else
+ return 1;
+
+}
+
+int main(int argc, TCHAR* argv[])
+{
+SOCKET conn_socket;
+struct hostent *hp;
+unsigned int addr;
+struct sockaddr_in sa;
+WSADATA wsaData;
+int iPort;
+
+if((argc < 2) || (lstrcmpi(argv[1] ,"/?") == 0) || (lstrcmpi(argv[1] ,"-?") == 0))
+{
+ Usage();
+ return 1;
+}
+
+if(argc == 1)
+{
+ Usage();
+}
+
+
+if (WSAStartup(0x0101,&wsaData) == SOCKET_ERROR)
+{
+ WSACleanup();
+ printf("WSAStartup failed with error %d\n",WSAGetLastError());
+ return 1;
+}
+
+if((hp = gethostbyname((LPCSTR)argv[1])) == NULL)
+{
+ addr = inet_addr((LPCSTR)argv[1]);
+ hp = gethostbyaddr((LPCSTR)&addr,4,AF_INET);
+}
+
+memset((LPSTR)&sa,0, sizeof(sa));
+memcpy((TCHAR*)&sa.sin_addr, hp->h_addr_list[0] , hp->h_length);
+
+iPort = atoi((LPCSTR)argv[2]);
+
+//sa.sin_addr = hp->h_addr_list[0];
+sa.sin_family = PF_INET;
+sa.sin_port = htons((u_short)iPort);
+
+conn_socket = socket(AF_INET, SOCK_STREAM, 0);
+
+printf("\nConnecting... ");
+
+int z = connect(conn_socket, (struct sockaddr*)&sa, sizeof(sa));
+
+if(z == SOCKET_ERROR)
+{
+ z = connect(conn_socket, (struct sockaddr*)&sa, sizeof(sa));
+
+ if(z == SOCKET_ERROR)
+ {
+ printf("\nUnable to connect to host.");
+ printf("\nWSAStartup failed with error %d\n",WSAGetLastError());
+ return 1;
+ }
+ else
+ {
+ printf("connection was successfull.\n");
+ }
+}
+else
+{
+ printf("connection was successfull.\n");
+}
+
+if(SendMsg(conn_socket, argv[3]) == 0)
+{
+ WSACleanup();
+ return 0;
+}
+else
+{
+ WSACleanup();
+ return 1;
+}
+
+}
diff --git a/xCAT/postscripts/upflag/upflag/upflag.vcproj b/xCAT/postscripts/upflag/upflag/upflag.vcproj
new file mode 100644
index 000000000..ec256c849
--- /dev/null
+++ b/xCAT/postscripts/upflag/upflag/upflag.vcproj
@@ -0,0 +1,347 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/xCAT/postscripts/upflag/upflag/x64/Release/BuildLog.htm b/xCAT/postscripts/upflag/upflag/x64/Release/BuildLog.htm
new file mode 100644
index 000000000..4776fcb39
Binary files /dev/null and b/xCAT/postscripts/upflag/upflag/x64/Release/BuildLog.htm differ
diff --git a/xCAT/postscripts/upflag/upflag/x64/Release/mt.dep b/xCAT/postscripts/upflag/upflag/x64/Release/mt.dep
new file mode 100644
index 000000000..416f2854b
--- /dev/null
+++ b/xCAT/postscripts/upflag/upflag/x64/Release/mt.dep
@@ -0,0 +1 @@
+Manifest resource last updated at 15:51:42.85 on Fri 06/20/2008
diff --git a/xCAT/postscripts/upflag/upflag/x64/Release/upflag.exe.intermediate.manifest b/xCAT/postscripts/upflag/upflag/x64/Release/upflag.exe.intermediate.manifest
new file mode 100644
index 000000000..1c06b6190
--- /dev/null
+++ b/xCAT/postscripts/upflag/upflag/x64/Release/upflag.exe.intermediate.manifest
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/xCAT/postscripts/upflag/upflag/x64/Release/upflag.obj b/xCAT/postscripts/upflag/upflag/x64/Release/upflag.obj
new file mode 100644
index 000000000..1fd566521
Binary files /dev/null and b/xCAT/postscripts/upflag/upflag/x64/Release/upflag.obj differ
diff --git a/xCAT/postscripts/upflag/upflag/x64/Release/vc90.idb b/xCAT/postscripts/upflag/upflag/x64/Release/vc90.idb
new file mode 100644
index 000000000..05f7bd67f
Binary files /dev/null and b/xCAT/postscripts/upflag/upflag/x64/Release/vc90.idb differ
diff --git a/xCAT/postscripts/upflag/upflag/x64/Release/vc90.pdb b/xCAT/postscripts/upflag/upflag/x64/Release/vc90.pdb
new file mode 100644
index 000000000..484fd9fa2
Binary files /dev/null and b/xCAT/postscripts/upflag/upflag/x64/Release/vc90.pdb differ
diff --git a/xCAT/postscripts/upflagx64.exe b/xCAT/postscripts/upflagx64.exe
new file mode 100644
index 000000000..2da24fea9
Binary files /dev/null and b/xCAT/postscripts/upflagx64.exe differ
diff --git a/xCAT/postscripts/upflagx86.exe b/xCAT/postscripts/upflagx86.exe
new file mode 100644
index 000000000..40cb11271
Binary files /dev/null and b/xCAT/postscripts/upflagx86.exe differ