diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/include/client.h ircd-hybrid-6.0/include/client.h
--- ircd-hybrid-6.0.orig/include/client.h	Mon Mar  5 22:50:57 2001
+++ ircd-hybrid-6.0/include/client.h	Mon Mar  5 22:49:50 2001
@@ -319,25 +319,25 @@
 #define FLAGS_IPHASH       0x1000 /* iphashed this client */
 
 /* umodes, settable flags */
-#define FLAGS_SERVNOTICE   0x0001 /* server notices such as kill */
-#define FLAGS_CCONN        0x0002 /* Client Connections */
-#define FLAGS_REJ          0x0004 /* Bot Rejections */
-#define FLAGS_SKILL        0x0008 /* Server Killed */
-#define FLAGS_FULL         0x0010 /* Full messages */
-#define FLAGS_SPY          0x0020 /* see STATS / LINKS */
-#define FLAGS_DEBUG        0x0040 /* 'debugging' info */
-#define FLAGS_NCHANGE      0x0080 /* Nick change notice */
-#define FLAGS_WALLOP       0x0100 /* send wallops to them */
-#define FLAGS_OPERWALL     0x0200 /* Operwalls */
-#define FLAGS_INVISIBLE    0x0400 /* makes user invisible */
-#define FLAGS_BOTS         0x0800 /* shows bots */
-#define FLAGS_EXTERNAL     0x1000 /* show servers introduced */
+#define FLAGS_SERVNOTICE   0x00001 /* server notices such as kill */
+#define FLAGS_CCONN        0x00002 /* Client Connections */
+#define FLAGS_REJ          0x00004 /* Bot Rejections */
+#define FLAGS_SKILL        0x00008 /* Server Killed */
+#define FLAGS_FULL         0x00010 /* Full messages */
+#define FLAGS_SPY          0x00020 /* see STATS / LINKS */
+#define FLAGS_DEBUG        0x00040 /* 'debugging' info */
+#define FLAGS_NCHANGE      0x00080 /* Nick change notice */
+#define FLAGS_WALLOP       0x00100 /* send wallops to them */
+#define FLAGS_OPERWALL     0x00200 /* Operwalls */
+#define FLAGS_INVISIBLE    0x00400 /* makes user invisible */
+#define FLAGS_BOTS         0x00800 /* shows bots */
+#define FLAGS_EXTERNAL     0x01000 /* show servers introduced */
 /* user information flags, only settable by remote mode or local oper */
-#define FLAGS_IMMUNE       0x2000 /* immune from kick/deop */
-#define FLAGS_OPER         0x4000 /* Operator */
-#define FLAGS_LOCOP        0x8000 /* Local operator -- SRB */
-
+#define FLAGS_IMMUNE       0x02000 /* immune from kick/deop */
+#define FLAGS_OPER         0x04000 /* Operator */
+#define FLAGS_LOCOP        0x08000 /* Local operator -- SRB */
 #define FLAGS_AUSPEX       0x10000 /* See the invisible. */
+#define FLAGS_IDENTIFIED   0x20000 /* Registered and identified with NickServ -- MGS */
 
 /* *sigh* overflow flags */
 #define FLAGS2_RESTRICTED   0x0001      /* restricted client */
@@ -387,7 +387,7 @@
 
 
 #define SEND_UMODES  (FLAGS_INVISIBLE | FLAGS_OPER | FLAGS_WALLOP | \
-                      FLAGS_IMMUNE)
+                      FLAGS_IMMUNE | FLAGS_IDENTIFIED)
 /*
  * Only opers can have modes outside USER_UMODES.  If you change this
  * set, then also change the explanatory NOTICE in user_mode(). -dark
@@ -397,7 +397,8 @@
                       FLAGS_REJ | FLAGS_SKILL | FLAGS_FULL | FLAGS_SPY | \
                       FLAGS_NCHANGE | FLAGS_OPERWALL | FLAGS_DEBUG | \
                       FLAGS_BOTS | FLAGS_EXTERNAL | FLAGS_LOCOP | \
-                      FLAGS_GOD | FLAGS_IMMUNE | FLAGS_AUSPEX)
+                      FLAGS_GOD | FLAGS_IMMUNE | FLAGS_AUSPEX | \
+                      FLAGS_IDENTIFIED)
 
 #ifndef OPER_UMODES
 #define OPER_UMODES  (FLAGS_OPER | FLAGS_WALLOP | FLAGS_SERVNOTICE | \
@@ -453,7 +453,9 @@
 #define SetWallops(x)           ((x)->umodes |= FLAGS_WALLOP)
 #define IsImmune(x)             ((x)->umodes & FLAGS_IMMUNE)
 #define SeesAllConnections(x)	((x)->umodes & FLAGS_AUSPEX)
-
+#define IsIdentifiedNick(x)     ((x)->umodes & FLAGS_IDENTIFIED)
+#define SetIdentifiedNick(x)    ((x)->umodes |= FLAGS_IDENTIFIED)
+#define ClearIdentifiedNick(x)  ((x)->umodes &= ~FLAGS_IDENTIFIED)
 
 #ifdef REJECT_HOLD
 #define IsRejectHeld(x)         ((x)->flags & FLAGS_REJECT_HOLD)
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/include/numeric.h ircd-hybrid-6.0/include/numeric.h
--- ircd-hybrid-6.0.orig/include/numeric.h	Mon Mar  5 22:50:57 2001
+++ ircd-hybrid-6.0/include/numeric.h	Mon Mar  5 22:49:50 2001
@@ -229,6 +229,8 @@
 #define RPL_ENDOFWHOIS       318
 #define RPL_WHOISCHANNELS    319
 
+#define RPL_WHOISIDENTIFIED  320
+
 #define RPL_LISTSTART        321
 #define RPL_LIST             322
 #define RPL_LISTEND          323
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/m_whois.c ircd-hybrid-6.0/src/m_whois.c
--- ircd-hybrid-6.0.orig/src/m_whois.c	Mon Mar  5 22:50:56 2001
+++ ircd-hybrid-6.0/src/m_whois.c	Mon Mar  5 22:49:50 2001
@@ -291,6 +291,11 @@
               )
             sendto_one(sptr, form_str(RPL_WHOISOPERATOR),
                        me.name, parv[0], name);
+
+          if (IsIdentifiedNick(acptr))
+            sendto_one(sptr, form_str(RPL_WHOISIDENTIFIED),
+                       me.name, parv[0], name);
+
 #ifdef WHOIS_NOTICE
           if ((MyOper(acptr)) && ((acptr)->umodes & FLAGS_SPY) &&
               (MyConnect(sptr)) && (IsPerson(sptr)) && (acptr != sptr))
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/messages.tab ircd-hybrid-6.0/src/messages.tab
--- ircd-hybrid-6.0.orig/src/messages.tab	Mon Mar  5 22:50:57 2001
+++ ircd-hybrid-6.0/src/messages.tab	Mon Mar  5 22:49:50 2001
@@ -347,7 +347,7 @@
 /* 317 RPL_WHOISIDLE, */        ":%s 317 %s %s %d %d :seconds idle, signon time",
 /* 318 RPL_ENDOFWHOIS, */       ":%s 318 %s %s :End of /WHOIS list.",
 /* 319 RPL_WHOISCHANNELS, */    ":%s 319 %s %s :%s",
-/* 320 */       (char *)NULL,
+/* 320 RPL_WHOISIDENTIFIED, */   ":%s 320 %s %s :has identified with NickServ",
 /* 321 RPL_LISTSTART, */        ":%s 321 %s Channel :Users  Name",
 /* 322 RPL_LIST, */             ":%s 322 %s %s %d :%s",
 /* 323 RPL_LISTEND, */          ":%s 323 %s :End of /LIST",
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/messages_cust.tab ircd-hybrid-6.0/src/messages_cust.tab
--- ircd-hybrid-6.0.orig/src/messages_cust.tab	Mon Mar  5 22:50:57 2001
+++ ircd-hybrid-6.0/src/messages_cust.tab	Mon Mar  5 22:49:50 2001
@@ -348,7 +348,7 @@
 /* 317 RPL_WHOISIDLE, */        ":%s 317 %s %s %d %d :seconds idle, signon time",
 /* 318 RPL_ENDOFWHOIS, */       ":%s 318 %s %s :End of /WHOIS list.",
 /* 319 RPL_WHOISCHANNELS, */    ":%s 319 %s %s :%s",
-/* 320 */       (char *)NULL,
+/* 320 RPL_WHOISIDENTIFIED, */    ":%s 320 %s %s :has identified with NickServ",
 /* 321 RPL_LISTSTART, */        ":%s 321 %s Channel :Users  Name",
 /* 322 RPL_LIST, */             ":%s 322 %s %s %d :%s",
 /* 323 RPL_LISTEND, */          ":%s 323 %s :End of /LIST",
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/s_user.c ircd-hybrid-6.0/src/s_user.c
--- ircd-hybrid-6.0.orig/src/s_user.c	Mon Mar  5 22:50:57 2001
+++ ircd-hybrid-6.0/src/s_user.c	Mon Mar  5 22:50:37 2001
@@ -97,6 +97,7 @@
   {FLAGS_EXTERNAL, 'x'},
   {FLAGS_SPY, 'y'},
   {FLAGS_OPERWALL, 'z'},
+  {FLAGS_IDENTIFIED, 'e'},
   {0, 0}
 };
 
@@ -141,7 +142,7 @@
   FLAGS_BOTS,   /* b */
   FLAGS_CCONN,  /* c */
   FLAGS_DEBUG,  /* d */
-  0,            /* e */
+  FLAGS_IDENTIFIED, /* e */
   FLAGS_FULL,   /* f */
   0,            /* g */
   0,            /* h */
@@ -1195,6 +1196,7 @@
 static int nickkilldone(aClient *cptr, aClient *sptr, int parc,
                  char *parv[], time_t newts,char *nick)
 {
+  int setflags = sptr->umodes;
 
   if (IsServer(sptr))
     {
@@ -1269,6 +1271,9 @@
                                  parv[0], nick, sptr->username,
                                  sptr->host);
 
+              ClearIdentifiedNick(sptr);
+              send_umode_out(cptr, sptr, setflags);
+
               sendto_common_channels(sptr, ":%s NICK :%s", parv[0], nick);
               if (sptr->user)
                 {
@@ -1295,6 +1300,8 @@
         }
       else
         {
+          ClearIdentifiedNick(sptr);
+          send_umode_out(cptr, sptr, setflags);
           sendto_common_channels(sptr, ":%s NICK :%s", parv[0], nick);
           if (sptr->user)
             {
@@ -2158,6 +2165,12 @@
                     }
                 }
             }
+          break;
+	case 'e' :
+          if(!IsServer(cptr))
+            break;
+
+          SetIdentifiedNick(sptr);
           break;
 
           /* we may not get these,
