diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/include/config.h ircd-hybrid-6.0/include/config.h
--- ircd-hybrid-6.0.orig/include/config.h	Wed Jun 20 03:42:17 2001
+++ ircd-hybrid-6.0/include/config.h	Wed Jun 20 02:39:38 2001
@@ -48,19 +48,12 @@
  * The C/N lines passwords are used to generate the hashes used and it 
  * is adviceable to use a diffrent pass for C and N.
  *
- * To allow fallback to PASS, add
- *  #define CHALLENGERESPONSE_FALLBACK
- *  #define CHALLENGERESPONSE_EXPIRY  30
- *
- * CHALLENGERESPONSE_EXPIRY is defined in seconds.
+ * To accept PASS (although never send it) define CHALLENGERESPONSE_FALLBACK
  *
  */
 
 #define CHALLENGERESPONSE
 #define CHALLENGERESPONSE_FALLBACK
-#undef CHALLENGERESPONSE_EXPIRY
-
-
 
 /***************** MAKE SURE THIS IS CORRECT!!!!!!!!! **************/
 /* ONLY EDIT "HARD_FDLIMIT_" and "INIT_MAXCLIENTS" */
@@ -809,8 +802,10 @@
  * LWALLOPS - Like wallops but only local.
  *
  * This is actually a compatibility command which really calls m_locops().
+ *
+ * nah -- asuffield
  */
-#define LWALLOPS
+#undef LWALLOPS
 
 /*
  * Define this to enable WintrHawk "styling"
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/include/msg.h ircd-hybrid-6.0/include/msg.h
--- ircd-hybrid-6.0.orig/include/msg.h	Wed Jun 20 03:42:17 2001
+++ ircd-hybrid-6.0/include/msg.h	Tue Jun 19 20:00:30 2001
@@ -132,7 +132,7 @@
 #define MSG_MAKEPASS "MAKEPASS" /* MAKEPASS */
 #define MSG_STOPIC   "STOPIC"   /* STOPIC */
 
-#define MSG_LOCOPS   "LOCOPS"   /* LOCOPS */
+/*#define MSG_LOCOPS   "LOCOPS"  */ /* LOCOPS */ /* nah -- asuffield */
 #ifdef LWALLOPS
 #define MSG_LWALLOPS "LWALLOPS" /* Same as LOCOPS */
 #endif /* LWALLOPS */
@@ -200,7 +200,7 @@
   { MSG_INVITE,  m_invite,   0, MAXPARA, 1, 0, 0, 0L },
   { MSG_KICK,    m_kick,     0, MAXPARA, 1, 0, 0, 0L },
   { MSG_WALLOPS, m_wallops,  0, MAXPARA, 1, 0, 0, 0L },
-  { MSG_LOCOPS,  m_locops,   0, MAXPARA, 1, 0, 0, 0L },
+			   /*  { MSG_LOCOPS,  m_locops,   0, MAXPARA, 1, 0, 0, 0L },*/
 #ifdef LWALLOPS
   { MSG_LWALLOPS,m_locops,   0, MAXPARA, 1, 0, 0, 0L },
 #endif /* LWALLOPS */
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/include/send.h ircd-hybrid-6.0/include/send.h
--- ircd-hybrid-6.0.orig/include/send.h	Wed Jun 20 03:42:17 2001
+++ ircd-hybrid-6.0/include/send.h	Wed Jun 20 02:24:55 2001
@@ -55,15 +55,6 @@
 extern  void sendto_match_butone(struct Client *, struct Client *, 
                                  char *, int, const char *, ...);
 
-extern  void sendto_ops_flag(int, const char *, ...);
-
-extern  void sendto_realops(const char *, ...);
-extern  void sendto_realops_flag(int, const char *, ...);
-extern  void sendto_realops_flags(int*, const char *, ...);
-
-extern  void sendto_ops(const char *, ...);
-extern  void sendto_ops_butone(struct Client *, struct Client *, 
-                               const char *, ...);
 extern  void sendto_wallops_butone(struct Client *, struct Client *, 
                                    const char *, ...);
 extern  void ts_warn(const char *, ...);
@@ -79,6 +70,9 @@
 #define MATCH_SERVER  1
 #define MATCH_HOST    2
 
+extern  void sendto_ops_flag(int, const char *, ...);
 extern  void sendto_ops_flag_butone(struct Client *, int, const char *, ...);
+extern  void sendto_ops_flag_butone_from(struct Client *, int, struct Client*, const char *, ...);
+extern  void sendto_ops_flag_butone_hidefrom(struct Client *, int, const char *, ...);
 
 #endif /* INCLUDED_send_h */
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/blalloc.c ircd-hybrid-6.0/src/blalloc.c
--- ircd-hybrid-6.0.orig/src/blalloc.c	Sat Jul 31 09:22:56 1999
+++ ircd-hybrid-6.0/src/blalloc.c	Tue Jun 19 20:00:46 2001
@@ -16,6 +16,7 @@
 
 #ifdef DEBUG_BLOCK_ALLOCATOR
 #include "send.h"           /* sendto_ops */
+#include "client.h"
 
 const char* BH_CurrentFile = 0;   /* GLOBAL used for BlockHeap debugging */
 int         BH_CurrentLine = 0;   /* GLOBAL used for BlockHeap debugging */
@@ -278,11 +279,11 @@
 #ifdef DEBUG_BLOCK_ALLOCATOR
       log(L_WARN, "blalloc.c bit already clear in map caller %s %d",
           BH_CurrentFile, BH_CurrentLine);
-      sendto_ops("blalloc.c bit already clear in map elemSize %d caller %s %d",
-                         bh->elemSize,
-                         BH_CurrentFile,
-                         BH_CurrentLine);
-              sendto_ops("Please report to the hybrid team! ircd-hybrid@the-project.org");
+      sendto_ops_flag(UMODE_DEBUG, "blalloc.c bit already clear in map elemSize %d caller %s %d",
+			     bh->elemSize,
+			     BH_CurrentFile,
+			     BH_CurrentLine);
+      sendto_ops_flag(UMODE_DEBUG, "Please report to the dancer-hybrid team! opn-coders@vc.bc.ca");
 #endif /* DEBUG_BLOCK_ALLOCATOR */
             }
           else
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/channel.c ircd-hybrid-6.0/src/channel.c
--- ircd-hybrid-6.0.orig/src/channel.c	Wed Jun 20 03:42:17 2001
+++ ircd-hybrid-6.0/src/channel.c	Tue Jun 19 16:45:28 2001
@@ -226,7 +226,7 @@
       list = &chptr->invexlist;
       break;
     default:
-      sendto_realops("add_id() called with unknown ban type %d!", type);
+      sendto_ops_flag(UMODE_DEBUG, "add_id() called with unknown ban type %d!", type);
       return -1;
     }
 
@@ -306,7 +306,7 @@
       list = &chptr->invexlist;
       break;
     default:
-      sendto_realops("del_id() called with unknown ban type %d!", type);
+      sendto_ops_flag(UMODE_DEBUG, "del_id() called with unknown ban type %d!", type);
       return -1;
     }
 
@@ -2085,9 +2085,9 @@
 		  *mbufw++ = 'j';
                   len += 2;
 
-                  sendto_realops("%s!%s@%s juping channel %s",
-                                 sptr->name, sptr->username,
-                                 sptr->host, chptr->chname);
+                  sendto_ops_flag(UMODE_SERVNOTICE, "%s!%s@%s juping channel %s",
+					  sptr->name, sptr->username,
+					  sptr->host, chptr->chname);
                 }
               else if(whatt == MODE_DEL)
                 {
@@ -2096,9 +2096,9 @@
 		  *mbufw++ = 'j';
                   len += 2;
 
-                  sendto_realops("%s!%s@%s unjuping channel %s",
-                                 sptr->name, sptr->username,
-                                 sptr->host, chptr->chname);
+                  sendto_ops_flag(UMODE_SERVNOTICE, "%s!%s@%s unjuping channel %s",
+					  sptr->name, sptr->username,
+					  sptr->host, chptr->chname);
                 }
             }
           break;
@@ -2525,9 +2525,9 @@
   if( chptr->mode.mode & MODE_JUPED )
     {
       sendto_ops_flag(UMODE_SPY,
-		      "User %s (%s@%s) is attempting to join juped channel %s",
-		      sptr->name,
-		      sptr->username, sptr->host,chptr->chname);
+			     "User %s (%s@%s) is attempting to join juped channel %s",
+			     sptr->name,
+			     sptr->username, sptr->host,chptr->chname);
       return (ERR_BADCHANNAME);
     }
 #endif
@@ -2631,7 +2631,7 @@
 
 #ifdef CHANNEL_CREATION_NOTICE
       if(IsPerson(cptr) && !IsServer(cptr)) {
-        sendto_ops_flag_butone(NULL, UMODE_CHCREATE, "Channel %s created by %s!%s@%s on %s", chptr->chname, cptr->name, 
+        sendto_ops_flag(UMODE_CHCREATE, "Channel %s created by %s!%s@%s on %s", chptr->chname, cptr->name, 
 			       cptr->username, cptr->host, me.name);
       }
 #endif /* CHANNEL_CREATION_NOTICE */
@@ -3096,10 +3096,6 @@
 	   * strictly speaking its an error. However, if this entry is
 	   * ignored, its a non fatal one.
 	   */
-#if 0
-          sendto_ops("non zero user count in remove_empty_channels");
-          sendto_ops("Please report to the hybrid team! ircd-hybrid@the-project.org");
-#endif
           empty_channel_list->next_empty_channel = (struct Channel *)NULL;
           empty_channel_list->last_empty_channel = (struct Channel *)NULL;
           continue;
@@ -3297,7 +3293,7 @@
             {
               if(SPAMNUM && (sptr->join_leave_count >= SPAMNUM))
                 {
-                  sendto_ops_flag_butone(NULL, UMODE_BOTS,
+                  sendto_ops_flag(UMODE_BOTS,
 					 "User %s (%s@%s) is a possible spambot",
 					 sptr->name,
 					 sptr->username, sptr->host);
@@ -3393,7 +3389,7 @@
  
               if(sptr->oper_warn_count_down == 0)
                 {
-                  sendto_ops_flag_butone(NULL, UMODE_BOTS,
+                  sendto_ops_flag(UMODE_BOTS,
 					 "User %s (%s@%s) trying to join %s is a possible spambot",
 					 sptr->name,
 					 sptr->username,
@@ -3621,7 +3617,7 @@
         {
           if(SPAMNUM && (sptr->join_leave_count >= SPAMNUM))
             {
-              sendto_ops_flag_butone(NULL, UMODE_BOTS,
+              sendto_ops_flag(UMODE_BOTS,
 				     "User %s (%s@%s) is a possible spambot",
 				     sptr->name,
 				     sptr->username, sptr->host);
@@ -3763,8 +3759,8 @@
       return 0;
     }
   if (IsServer(sptr))
-    sendto_ops("KICK from %s for %s %s",
-               parv[0], parv[1], parv[2]);
+    sendto_ops_flag(UMODE_SPY, "KICK from %s for %s %s",
+			    parv[0], parv[1], parv[2]);
   comment = (BadPtr(parv[3])) ? parv[0] : parv[3];
   if (strlen(comment) > (size_t) TOPICLEN)
     comment[TOPICLEN] = '\0';
@@ -3887,7 +3883,7 @@
       remove_user_from_channel(who, chptr, 1);
       if (MyClient(sptr))
 #ifdef GODOPERS
-        sendto_ops_flag_butone(NULL, UMODE_BOTS,
+        sendto_ops_flag(UMODE_BOTS,
 			       "Kick from %s by %s on %s (%s@%s) [%s]",
 			       name, sptr->name, who->name,
 			       who->username, who->host, who->user->server);
@@ -4380,9 +4376,9 @@
                   s++;
                   *s = '\0';
                 }
-              sendto_realops("POSSIBLE /names abuser %s [%s]",
-                             para,
-                             get_client_name(sptr,FALSE));
+              sendto_ops_flag(UMODE_BOTS, "POSSIBLE /names abuser %s [%s]",
+				      para,
+				      get_client_name(sptr,FALSE));
               sendto_one(sptr, form_str(ERR_TOOMANYTARGETS),
                          me.name, sptr->name, "NAMES",1);
               return 0;
@@ -4746,8 +4742,8 @@
       sendto_channel_butserv(chptr, &me,
              ":%s NOTICE %s :*** Notice -- TS for %s changed from %lu to 0",
               me.name, chptr->chname, chptr->chname, oldts);
-      sendto_realops("Server %s changing TS on %s from %lu to 0",
-                     sptr->name,parv[2],oldts);
+      sendto_ops_flag(UMODE_SERVNOTICE, "Server %s changing TS on %s from %lu to 0",
+			      sptr->name,parv[2],oldts);
     }
 
   doesop = (parv[4+args][0] == '@' || parv[4+args][1] == '@');
@@ -4796,9 +4792,9 @@
 
           if (MyConnect(sptr) && !isnew)
             {
-              sendto_realops("Hacked ops from %s on opless channel: %s",
-                             sptr->name,
-                             chptr->chname);
+              sendto_ops_flag(UMODE_SERVNOTICE, "Hacked ops from %s on opless channel: %s",
+				     sptr->name,
+				     chptr->chname);
             }
 #endif
         }
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/client.c ircd-hybrid-6.0/src/client.c
--- ircd-hybrid-6.0.orig/src/client.c	Wed Jun 20 03:42:17 2001
+++ ircd-hybrid-6.0/src/client.c	Tue Jun 19 16:45:34 2001
@@ -219,9 +219,8 @@
        * sendto_ops in it should never happen, and if it does, the 
        * hybrid team wants to hear about it
        */
-      sendto_ops(BH_FREE_ERROR_MESSAGE, cptr);
-      sendto_ops("Please report to the hybrid team! " \
-                 "ircd-hybrid@the-project.org");
+      sendto_ops_flag(UMODE_DEBUG, BH_FREE_ERROR_MESSAGE, cptr);
+      sendto_ops_flag(UMODE_DEBUG, "Please report to the dancer-hybrid team! opn-coders@vc.bc.ca");
 
       log(L_WARN, BH_FREE_ERROR_MESSAGE, cptr);
     }
@@ -323,14 +322,13 @@
                 {
                   if(IsConfElined(aconf))
                     {
-                      sendto_realops("D-line over-ruled for %s client is E-lined",
-                                 get_client_name(cptr,FALSE));
-                                 continue;
+                      sendto_ops_flag(UMODE_CCONN, "D-line over-ruled for %s client is E-lined",
+					     get_client_name(cptr,FALSE));
                       continue;
                     }
 
-		      sendto_ops_flag_butone(NULL, UMODE_SKILL, "%s confirms D-line of %s", me.name,
-					     get_client_name(cptr, FALSE));
+		  sendto_ops_flag(UMODE_SKILL, "%s confirms D-line of %s", me.name,
+					 get_client_name(cptr, FALSE));
 
                   dying_clients[die_index] = cptr;
 /* Wintrhawk */
@@ -372,7 +370,7 @@
 #ifdef GLINES
                   if( (aconf = find_gkill(cptr,cptr->username)) )
                     {
-		      sendto_ops_flag_butone(NULL, UMODE_SKILL, "%s confirms G-line of %s", me.name,
+		      sendto_ops_flag(UMODE_SKILL, "%s confirms G-line of %s", me.name,
                                  get_client_name(cptr, FALSE));
 
                       dying_clients[die_index] = cptr;
@@ -405,13 +403,13 @@
                     {
                       if(aconf->status & CONF_ELINE)
                         {
-                          sendto_realops("K-line over-ruled for %s client is E-lined",
-                                     get_client_name(cptr,FALSE));
-                                     continue;
+                          sendto_ops_flag(UMODE_CCONN, "K-line over-ruled for %s client is E-lined",
+						 get_client_name(cptr,FALSE));
+			  continue;
                         }
 
-		      sendto_ops_flag_butone(NULL, UMODE_SKILL, "%s confirms kill of %s", me.name,
-                                 get_client_name(cptr, FALSE));
+		      sendto_ops_flag(UMODE_SKILL, "%s confirms kill of %s", me.name,
+					     get_client_name(cptr, FALSE));
                       dying_clients[die_index] = cptr;
 
 /* Wintrhawk */
@@ -468,8 +466,8 @@
               aconf->port = 0;
               aconf->hold = CurrentTime + 60;
               add_temp_kline(aconf);
-              sendto_realops("Idle time limit exceeded for %s - temp k-lining",
-                         get_client_name(cptr,FALSE));
+              sendto_ops_flag(UMODE_SKILL, "Idle time limit exceeded for %s - temp k-lining",
+				     get_client_name(cptr,FALSE));
               continue;         /* and go examine next fd/cptr */
             }
         }
@@ -523,8 +521,8 @@
               if (IsServer(cptr) || IsConnecting(cptr) ||
                   IsHandshake(cptr))
                 {
-                  sendto_ops("No response from %s, closing link",
-                             get_client_name(cptr, MASK_IP));
+                  sendto_ops_flag(UMODE_SERVNOTICE, "No response from %s, closing link",
+					 get_client_name(cptr, MASK_IP));
                 }
               /*
                * this is used for KILL lines with time restrictions
@@ -606,7 +604,7 @@
            */
           if(cptr->flags2 & FLAGS2_ALREADY_EXITED)
             {
-              sendto_realops("Client already exited doing ping timeout %X",cptr);
+              sendto_ops_flag(UMODE_DEBUG, "Client already exited doing ping timeout %X",cptr);
             }
           else
             (void)exit_client(cptr, cptr, &me, ping_time_out_buffer );
@@ -628,7 +626,7 @@
            */
           if(cptr->flags2 & FLAGS2_ALREADY_EXITED)
             {
-              sendto_realops("Client already exited %X",cptr);
+              sendto_ops_flag(UMODE_DEBUG, "Client already exited %X",cptr);
             }
           else
             (void)exit_client(cptr, cptr, &me, dying_clients_reason[die_index]);
@@ -643,7 +641,7 @@
            */
           if(cptr->flags2 & FLAGS2_ALREADY_EXITED)
             {
-              sendto_realops("Client already exited %X",cptr);
+              sendto_ops_flag(UMODE_DEBUG, "Client already exited %X",cptr);
             }
           else
             (void)exit_client(cptr, cptr, &me, dying_clients_reason[die_index]);
@@ -1170,7 +1168,7 @@
   */
   if (IsMe(sptr))
     {
-      sendto_ops("ERROR: tried to exit me! : %s", comment);
+      sendto_ops_flag(UMODE_DEBUG, "ERROR: tried to exit me! : %s", comment);
       return;        /* ...must *never* exit self!! */
     }
   else if (IsServer(sptr))
@@ -1496,7 +1494,7 @@
       sptr->flags |= FLAGS_CLOSING;
       if (IsPerson(sptr))
         {
-          sendto_ops_flag_butone(NULL, UMODE_CCONN,
+          sendto_ops_flag(UMODE_CCONN,
 				 "Client exiting: %s (%s@%s) [%s] [%s] [%s]",
 				 sptr->name, sptr->username, sptr->host,
 #ifdef WINTRHAWK
@@ -1609,7 +1607,7 @@
 
       if (sptr->servptr == &me)
         {
-          sendto_ops_flag_butone(NULL, UMODE_SERVNOTICE, "%s was connected to %s for %d seconds.  %d/%d sendK/recvK.",
+          sendto_ops_flag(UMODE_SERVNOTICE, "%s was connected to %s for %d seconds.  %d/%d sendK/recvK.",
 				 sptr->name, &me.name, CurrentTime - sptr->firsttime,
 				 sptr->sendK, sptr->receiveK);
           log(L_NOTICE, "%s was connected for %d seconds.  %d/%d sendK/recvK.",
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/flud.c ircd-hybrid-6.0/src/flud.c
--- ircd-hybrid-6.0.orig/src/flud.c	Wed Jun 20 03:42:17 2001
+++ ircd-hybrid-6.0/src/flud.c	Tue Jun 19 16:45:48 2001
@@ -58,27 +58,27 @@
   switch(type)
     {
     case 1: /* classic CTCP */
-      sendto_ops_flag_butone(NULL, UMODE_BOTS, "Flooder %s [%s@%s] on %s target: %s (ctcp %i)",
+      sendto_ops_flag(UMODE_BOTS, "Flooder %s [%s@%s] on %s target: %s (ctcp %i)",
 			     fluder->name, fluder->username, fluder->host,
 			     fluder->user->server, fludee, fluder->repeatcount);
       break;
     case 2: /* repeating channel traffic */
-      sendto_ops_flag_butone(NULL, UMODE_BOTS, "Flooder %s [%s@%s] on %s target: %s (echo %i)",
+      sendto_ops_flag(UMODE_BOTS, "Flooder %s [%s@%s] on %s target: %s (echo %i)",
                        fluder->name, fluder->username, fluder->host,
                        fluder->user->server, fludee, fluder->repeatcount);
       break;
     case 3: /* repeating oneself */
-      sendto_ops_flag_butone(NULL, UMODE_BOTS, "Flooder %s [%s@%s] on %s target: %s (spam %i)",
+      sendto_ops_flag(UMODE_BOTS, "Flooder %s [%s@%s] on %s target: %s (spam %i)",
                        fluder->name, fluder->username, fluder->host,
                        fluder->user->server, fludee, fluder->repeatcount);
       break;
     case 4: /* insane message lengths */
-      sendto_ops_flag_butone(NULL, UMODE_BOTS, "Flooder %s [%s@%s] on %s target: %s (len %i)",
+      sendto_ops_flag(UMODE_BOTS, "Flooder %s [%s@%s] on %s target: %s (len %i)",
                        fluder->name, fluder->username, fluder->host,
                        fluder->user->server, fludee, fluder->lastlen);
       break;
     default:
-      sendto_ops_flag_butone(NULL, UMODE_BOTS, "Flooder %s [%s@%s] on %s target: %s",
+      sendto_ops_flag(UMODE_BOTS, "Flooder %s [%s@%s] on %s target: %s",
                        fluder->name, fluder->username, fluder->host,
                        fluder->user->server, fludee);
       break;
@@ -256,7 +256,7 @@
 
   if(cptr && !MyConnect(fluder))
     {
-      sendto_realops("check_for_flud() called for non-local client");
+      sendto_ops_flag(UMODE_DEBUG, "check_for_flud() called for non-local client");
       return 0;
     }
  
@@ -426,7 +426,7 @@
   if (blocking && fluder->repeatcount > KILLNUM)
     {
       sendto_ops_flag(UMODE_SKILL, "Flood countermeasure, dumping user %s",
-		      fluder->name);
+			     fluder->name);
       sendto_one(fluder, ":%s KILL %s :%s spam",
                  me.name, fluder->name, cptr->name);
       exit_client(fluder, fluder, &me, "Excessive spam");
@@ -442,7 +442,7 @@
 
   if((cptr == NULL) && (chptr == NULL))
     {
-      sendto_realops("free_fluders(NULL, NULL)");
+      sendto_ops_flag(UMODE_DEBUG, "free_fluders(NULL, NULL)");
       return;
     }    
  
@@ -476,7 +476,7 @@
                 
   if(badguy == NULL)
     {
-      sendto_realops("free_fludees(NULL)");
+      sendto_ops_flag(UMODE_DEBUG, "free_fludees(NULL)");
       return;
     }
   fludees = badguy->fludees;
@@ -489,7 +489,7 @@
       else
         {
           if(!MyConnect(fludees->value.cptr))
-            sendto_realops("free_fludees() encountered non-local client");
+            sendto_ops_flag(UMODE_DEBUG, "free_fludees() encountered non-local client");
           else
             remove_fluder_reference(&fludees->value.cptr->fluders, badguy);
         }
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/ircd.c ircd-hybrid-6.0/src/ircd.c
--- ircd-hybrid-6.0.orig/src/ircd.c	Wed Jun 20 03:42:17 2001
+++ ircd-hybrid-6.0/src/ircd.c	Tue Jun 19 16:45:56 2001
@@ -368,7 +368,7 @@
   if ((CurrentTime = time(NULL)) == -1)
     {
       log(L_ERROR, "Clock Failure (%d)", errno);
-      sendto_ops("Clock Failure (%d), TS can be corrupted", errno);
+      sendto_ops_flag(UMODE_SERVNOTICE, "Clock Failure (%d), TS can be corrupted", errno);
       restart("Clock Failure");
     }
 
@@ -405,7 +405,7 @@
                   sprintf(to_send, 
                         "Entering high-traffic mode - (%.1fk/s > %dk/s)",
                                 (float)currlife, LRV);
-                  sendto_ops("%s", to_send);
+                  sendto_ops_flag(UMODE_SERVNOTICE, "%s", to_send);
                 }
             }
           else
@@ -419,7 +419,7 @@
                                 LIFESUX,
                                 (LIFESUX & 0x04) ?  " (TURBO)" : "",
                                 (int)LCF, (float)currlife);
-                  sendto_ops("%s", to_send);
+                  sendto_ops_flag(UMODE_SERVNOTICE, "%s", to_send);
                 }
             }
         }
@@ -430,7 +430,7 @@
             {
               LIFESUX = 0;
               if (NOISYHTM)
-                sendto_ops("Resuming standard operation . . . .");
+                sendto_ops_flag(UMODE_SERVNOTICE, "Resuming standard operation . . . .");
             }
         }
       lastrecvK = (long)me.receiveK;
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/list.c ircd-hybrid-6.0/src/list.c
--- ircd-hybrid-6.0.orig/src/list.c	Wed Jun 20 03:42:15 2001
+++ ircd-hybrid-6.0/src/list.c	Tue Jun 19 16:46:03 2001
@@ -187,16 +187,16 @@
        */
       if (user->joined || user->refcnt < 0 ||
           user->invited || user->channel)
-      sendto_realops("* %#x user (%s!%s@%s) %#x %#x %#x %d %d *",
-                 cptr, cptr ? cptr->name : "<noname>",
-                 cptr->username, cptr->host, user,
-                 user->invited, user->channel, user->joined,
-                 user->refcnt);
+      sendto_ops_flag(UMODE_DEBUG, "WTF: * %#x user (%s!%s@%s) %#x %#x %#x %d %d *",
+			     cptr, cptr ? cptr->name : "<noname>",
+			     cptr->username, cptr->host, user,
+			     user->invited, user->channel, user->joined,
+			     user->refcnt);
 
       if(BlockHeapFree(free_anUsers,user))
         {
-          sendto_realops("list.c couldn't BlockHeapFree(free_anUsers,user) user = %lX", user );
-          sendto_realops("Please report to the hybrid team! ircd-hybrid@the-project.org");
+          sendto_ops_flag(UMODE_DEBUG, "list.c couldn't BlockHeapFree(free_anUsers,user) user = %lX", user );
+          sendto_ops_flag(UMODE_DEBUG, "Please report to the dancer-hybrid team! opn-coders@vc.bc.ca");
 #ifdef SYSLOG_BLOCK_ALLOCATOR 
           log(L_DEBUG,"list.c couldn't BlockHeapFree(free_anUsers,user) user = %lX", (long unsigned int) user);
 #endif
@@ -247,8 +247,8 @@
 {
   if(BlockHeapFree(free_Links,lp))
     {
-      sendto_realops("list.c couldn't BlockHeapFree(free_Links,lp) lp = %lX", lp );
-      sendto_realops("Please report to the hybrid team!");
+      sendto_ops_flag(UMODE_DEBUG, "list.c couldn't BlockHeapFree(free_Links,lp) lp = %lX", lp );
+      sendto_ops_flag(UMODE_DEBUG, "Please report to the hybrid team!");
     }
 }
 
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/listener.c ircd-hybrid-6.0/src/listener.c
--- ircd-hybrid-6.0.orig/src/listener.c	Wed Jun 20 03:42:17 2001
+++ ircd-hybrid-6.0/src/listener.c	Tue Jun 19 16:46:14 2001
@@ -373,8 +373,8 @@
      * slow down the whining to opers bit 
      */
     if((last_oper_notice + 20) <= CurrentTime) {
-      sendto_realops("All connections in use. (%s)", 
-                     get_listener_name(listener));
+      sendto_ops_flag(UMODE_SERVNOTICE, "All connections in use. (%s)", 
+			     get_listener_name(listener));
       last_oper_notice = CurrentTime;
     }
     send(fd, "ERROR :All connections in use\r\n", 32, 0);
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/m_admin.c ircd-hybrid-6.0/src/m_admin.c
--- ircd-hybrid-6.0.orig/src/m_admin.c	Wed Jun 20 03:42:17 2001
+++ ircd-hybrid-6.0/src/m_admin.c	Tue Jun 19 16:46:19 2001
@@ -114,9 +114,9 @@
     return 0;
 
   if (IsPerson(sptr))
-    sendto_realops_flag(UMODE_SPY,
-			"ADMIN requested by %s (%s@%s) [%s]", sptr->name,
-			sptr->username, sptr->host, sptr->user->server);
+    sendto_ops_flag(UMODE_SPY,
+			   "ADMIN requested by %s (%s@%s) [%s]", sptr->name,
+			   sptr->username, sptr->host, sptr->user->server);
   if ((aconf = find_admin()))
     {
       sendto_one(sptr, form_str(RPL_ADMINME),
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/m_away.c ircd-hybrid-6.0/src/m_away.c
--- ircd-hybrid-6.0.orig/src/m_away.c	Wed Jun 20 03:42:17 2001
+++ ircd-hybrid-6.0/src/m_away.c	Tue Jun 19 16:46:26 2001
@@ -115,8 +115,8 @@
   /* make sure the user exists */
   if (!(sptr->user))
     {
-      sendto_realops_flag(UMODE_DEBUG,
-			  "Got AWAY from nil user, from %s (%s)\n",cptr->name,sptr->name);
+      sendto_ops_flag(UMODE_DEBUG,
+			     "Got AWAY from nil user, from %s (%s)\n",cptr->name,sptr->name);
       return 0;
     }
 
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/m_chall.c ircd-hybrid-6.0/src/m_chall.c
--- ircd-hybrid-6.0.orig/src/m_chall.c	Wed Jun 20 03:42:17 2001
+++ ircd-hybrid-6.0/src/m_chall.c	Tue Jun 19 16:46:31 2001
@@ -74,7 +74,6 @@
 
 int m_chall(struct Client *cptr, struct Client *sptr, int parc, char *parv[])
 {
-  static int sendflags[] = {UMODE_SERVNOTICE, UMODE_AUSPEX, UMODE_INVALID};
   char* salt = parc > 3 ? parv[3] : "";
   char* chall = parc > 2 ? parv[2] : "";
   char* host = parc > 1 ? parv[1] : "";
@@ -84,9 +83,9 @@
     {
       if (IsServer(cptr))
         {
-          sendto_realops("CHALL command from remote user %s -- %s is a hacked server",
-                          get_client_name(sptr,HIDE_IP),
-                          get_client_name(cptr,HIDE_IP));
+          sendto_ops_flag(UMODE_SERVNOTICE,"CHALL command from remote user %s -- %s is a hacked server",
+				 get_client_name(sptr,HIDE_IP),
+				 get_client_name(cptr,HIDE_IP));
         }
       else
         {
@@ -96,13 +95,12 @@
       return 0;
     }
 
-  sendto_realops_flags(sendflags, "CHALL received from %s, trying to use N:line for %s", get_client_name(cptr, SHOW_IP), host);
+  sendto_ops_flag(UMODE_SEEROUTING, "CHALL received from %s, trying to use N:line for %s", get_client_name(cptr, SHOW_IP), host);
 
   if (parc < 5)
     {
       sendto_one(cptr, "ERROR: Invalid challenge");
-      sendto_realops("Invalid CHALL from remote host for %s", host);
-      sendto_ops_flag(UMODE_DEBUG, "Got CHALL '%s' '%s' '%s'", host, chall, salt);
+      sendto_ops_flag(UMODE_SERVNOTICE, "Invalid CHALL from remote host for %s", host);
       return 0;
     }
 
@@ -112,14 +110,14 @@
 
   /* See if we got c and n lines. */
   if (!(n_conf = find_conf_by_name(host, CONF_NOCONNECT_SERVER))) {
-    sendto_ops("Challenge rejected. No N line for server %s", host);
+    sendto_ops_flag(UMODE_SERVNOTICE, "Challenge rejected. No N line for server %s", host);
     log(L_NOTICE, "Challenge rejected. No N line for server %s", host);
     sendto_one(cptr, "ERROR :Access denied. No N line"); 
     return exit_client(cptr, cptr, cptr, "Access denied. No N line");    
   } 
 
   if (!(c_conf = find_conf_by_name(host, CONF_CONNECT_SERVER))) {
-    sendto_ops("Challenge rejected. No C line for server %s", host);
+    sendto_ops_flag(UMODE_SERVNOTICE, "Challenge rejected. No C line for server %s", host);
     log(L_NOTICE, "Challenge rejected. No C line for server %s", host);
     sendto_one(cptr, "ERROR :Access denied. No C line"); 
     return exit_client(cptr, cptr, cptr, "Access denied. No C line");    
@@ -127,7 +125,7 @@
   
   /* Check if the ip matches the c/n IPs */
   if ( (cptr->ip.s_addr != c_conf->ipnum.s_addr) || (cptr->ip.s_addr != n_conf->ipnum.s_addr)) {
-    sendto_ops("Challenge rejected. C/N line IP doesn't match connection");
+    sendto_ops_flag(UMODE_SERVNOTICE, "Challenge rejected. C/N line IP doesn't match connection");
     log(L_NOTICE, "Challenge rejected. C/N line IP doesn't match connection");
     sendto_one(cptr, "ERROR :Access denied. C/N line don't match you"); 
     return exit_client(cptr, cptr, cptr, "Access denied. C/N line don't match");        
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/m_connect.c ircd-hybrid-6.0/src/m_connect.c
--- ircd-hybrid-6.0.orig/src/m_connect.c	Wed Jun 20 03:42:17 2001
+++ ircd-hybrid-6.0/src/m_connect.c	Tue Jun 19 16:46:36 2001
@@ -191,7 +191,7 @@
    */
   if (IsServer(cptr))
     {
-      sendto_ops_flag_butone(NULL, UMODE_SERVNOTICE,
+      sendto_ops_flag(UMODE_SERVNOTICE,
 			     "Remote CONNECT %s %s from %s",
 			     parv[1], parv[2] ? parv[2] : "",
 			     get_client_name(sptr, FALSE));
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/m_error.c ircd-hybrid-6.0/src/m_error.c
--- ircd-hybrid-6.0.orig/src/m_error.c	Sat Nov 18 19:11:12 2000
+++ ircd-hybrid-6.0/src/m_error.c	Tue Jun 19 16:46:48 2001
@@ -112,11 +112,11 @@
   if (IsPerson(cptr) || IsUnknown(cptr))
     return 0;
   if (cptr == sptr)
-    sendto_realops("ERROR :from %s -- %s",
-               get_client_name(cptr, FALSE), para);
+    sendto_ops_flag(UMODE_SERVNOTICE, "ERROR :from %s -- %s",
+			   get_client_name(cptr, FALSE), para);
   else
-    sendto_realops("ERROR :from %s via %s -- %s", sptr->name,
-               get_client_name(cptr,FALSE), para);
+    sendto_ops_flag(UMODE_SERVNOTICE, "ERROR :from %s via %s -- %s", sptr->name,
+			   get_client_name(cptr,FALSE), para);
   return 0;
 }
 
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/m_gline.c ircd-hybrid-6.0/src/m_gline.c
--- ircd-hybrid-6.0.orig/src/m_gline.c	Wed Jun 20 03:42:17 2001
+++ ircd-hybrid-6.0/src/m_gline.c	Tue Jun 19 16:46:56 2001
@@ -286,14 +286,14 @@
    log_gline_request(oper_name,oper_username,oper_host,oper_server,
                      user,host,reason);
 #ifdef USE_MAJORITY_GLINE
-   sendto_realops("%s!%s@%s on %s is requesting gline for [%s@%s] [%s]",
-                  oper_name,
-                  oper_username,
-                  oper_host,
-                  oper_server,
-                  user,
-                  host,
-                  reason);
+   sendto_ops_flag(UMODE_SERVNOTICE, "%s!%s@%s on %s is requesting gline for [%s@%s] [%s]",
+			  oper_name,
+			  oper_username,
+			  oper_host,
+			  oper_server,
+			  user,
+			  host,
+			  reason);
 
   /* If at least 3 opers agree this user should be G lined then do it */
   if(majority_gline(sptr,
@@ -319,14 +319,14 @@
       aconf->hold = CurrentTime + GLINE_TIME;
       add_gline(aconf);
       
-      sendto_realops("%s!%s@%s on %s has triggered gline for [%s@%s] [%s]",
-                     oper_name,
-                     oper_username,
-                     oper_host,
-                     oper_server,
-                     user,
-                     host,
-                     reason);
+      sendto_ops_flag(UMODE_SERVNOTICE, "%s!%s@%s on %s has triggered gline for [%s@%s] [%s]",
+			     oper_name,
+			     oper_username,
+			     oper_host,
+			     oper_server,
+			     user,
+			     host,
+			     reason);
       
       rehashed = YES;
       dline_in_progress = NO;
@@ -363,7 +363,7 @@
              ConfigFileEntry.glinefile, small_file_date((time_t)0));
   if ((out = open(filenamebuf, O_RDWR|O_APPEND|O_CREAT,0644))==-1)
     {
-      sendto_realops("*** Problem opening %s",filenamebuf);
+      sendto_ops_flag(UMODE_DEBUG, "*** Problem opening %s",filenamebuf);
       return;
     }
 
@@ -378,7 +378,7 @@
 
   if (write(out, buffer, strlen(buffer)) <= 0)
     {
-      sendto_realops("*** Problem writing to %s",filenamebuf);
+      sendto_ops_flag(UMODE_DEBUG,"*** Problem writing to %s",filenamebuf);
     }
   close(out);
 }
@@ -819,7 +819,7 @@
               (irccmp(gline_pending_ptr->oper_server1,oper_server) == 0) )
             {
               /* This oper or server has already "voted" */
-              sendto_realops("oper or server has already voted");
+              sendto_ops_flag(UMODE_SERVNOTICE, "oper or server has already voted");
               return NO;
             }
 
@@ -832,7 +832,7 @@
                   (irccmp(gline_pending_ptr->oper_server2,oper_server)==0))
                 {
                   /* This oper or server has already "voted" */
-                  sendto_realops("oper or server has already voted");
+                  sendto_ops_flag(UMODE_SERVNOTICE, "oper or server has already voted");
                   return NO;
                 }
 
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/m_htm.c ircd-hybrid-6.0/src/m_htm.c
--- ircd-hybrid-6.0.orig/src/m_htm.c	Wed Jun 20 03:42:17 2001
+++ ircd-hybrid-6.0/src/m_htm.c	Tue Jun 19 16:47:01 2001
@@ -130,9 +130,9 @@
                 LRV = new_value;
               sendto_one(sptr, ":%s NOTICE %s :NEW Max rate = %dk/s. Current = %.1fk/s",
                          me.name, parv[0], LRV, currlife);
-              sendto_realops("%s!%s@%s set new HTM rate to %dk/s (%.1fk/s current)",
-                             parv[0], sptr->username, sptr->host,
-                             LRV, currlife);
+              sendto_ops_flag(UMODE_SERVNOTICE, "%s!%s@%s set new HTM rate to %dk/s (%.1fk/s current)",
+				     parv[0], sptr->username, sptr->host,
+				     LRV, currlife);
             }
           else 
             sendto_one(sptr, ":%s NOTICE %s :LRV command needs an integer parameter",me.name, parv[0]);
@@ -143,8 +143,8 @@
             {
               LIFESUX = 1;
               sendto_one(sptr, ":%s NOTICE %s :HTM is now ON.", me.name, parv[0]);
-              sendto_ops("Entering high-traffic mode: Forced by %s!%s@%s",
-                         parv[0], sptr->username, sptr->host);
+              sendto_ops_flag(UMODE_SERVNOTICE, "Entering high-traffic mode: Forced by %s!%s@%s",
+				     parv[0], sptr->username, sptr->host);
               LCF = 30; /* 30s */
             }
           else if (!irccmp(command,"OFF"))
@@ -152,17 +152,17 @@
               LIFESUX = 0;
               LCF = LOADCFREQ;
               sendto_one(sptr, ":%s NOTICE %s :HTM is now OFF.", me.name, parv[0]);
-              sendto_ops("Resuming standard operation: Forced by %s!%s@%s",
-                         parv[0], sptr->username, sptr->host);
+              sendto_ops_flag(UMODE_SERVNOTICE, "Resuming standard operation: Forced by %s!%s@%s",
+				     parv[0], sptr->username, sptr->host);
             }
           else if (!irccmp(command,"QUIET"))
             {
-              sendto_ops("HTM is now QUIET");
+              sendto_ops_flag(UMODE_SERVNOTICE, "HTM is now QUIET");
               NOISYHTM = NO;
             }
           else if (!irccmp(command,"NOISY"))
             {
-              sendto_ops("HTM is now NOISY");
+              sendto_ops_flag(UMODE_SERVNOTICE, "HTM is now NOISY");
               NOISYHTM = YES;
             }
           else
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/m_info.c ircd-hybrid-6.0/src/m_info.c
--- ircd-hybrid-6.0.orig/src/m_info.c	Wed Jun 20 03:42:17 2001
+++ ircd-hybrid-6.0/src/m_info.c	Tue Jun 19 16:47:06 2001
@@ -36,9 +36,9 @@
 
   if (hunt_server(cptr,sptr,":%s INFO :%s",1,parc,parv) == HUNTED_ISME)
   {
-    sendto_realops_flag(UMODE_SPY, "info requested by %s (%s@%s) [%s]",
-      sptr->name, sptr->username, sptr->host,
-      sptr->user->server);
+    sendto_ops_flag(UMODE_SPY, "info requested by %s (%s@%s) [%s]",
+			   sptr->name, sptr->username, sptr->host,
+			   sptr->user->server);
 
     if (!NoFloodProtection(sptr))
     {
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/m_kill.c ircd-hybrid-6.0/src/m_kill.c
--- ircd-hybrid-6.0.orig/src/m_kill.c	Wed Jun 20 03:42:17 2001
+++ ircd-hybrid-6.0/src/m_kill.c	Tue Jun 19 16:47:11 2001
@@ -234,7 +234,7 @@
 
   if (!IsServer(sptr)) /* send it normally */
     {
-      sendto_realops("Received KILL message for %s. From %s Path: %s!%s", 
+      sendto_ops_flag(UMODE_SKILL, "Received KILL message for %s. From %s Path: %s!%s", 
                acptr->name, parv[0], inpath, path);
       /*
        * dilema here: we don't want non opers to see pathes which
@@ -247,7 +247,7 @@
        */
     }
   else
-    sendto_realops_flag(UMODE_SKILL,
+    sendto_ops_flag(UMODE_SKILL,
 			"Received KILL message for %s. From %s",
 			acptr->name, parv[0]);
 
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/m_kline.c ircd-hybrid-6.0/src/m_kline.c
--- ircd-hybrid-6.0.orig/src/m_kline.c	Wed Jun 20 03:42:17 2001
+++ ircd-hybrid-6.0/src/m_kline.c	Tue Jun 19 16:47:15 2001
@@ -243,9 +243,9 @@
 
   if ((out = open(filename, O_RDWR|O_APPEND|O_CREAT, 0644)) == (-1))
   {
-    sendto_realops("Error opening %s: %s",
-      filename,
-      strerror(errno));
+    sendto_ops_flag(UMODE_DEBUG, "Error opening %s: %s",
+			   filename,
+			   strerror(errno));
     return;
   }
 
@@ -313,9 +313,9 @@
 
   if ((out = open(filename, O_RDWR|O_APPEND|O_CREAT, 0644)) == (-1))
   {
-    sendto_realops("Error opening %s: %s",
-      filename,
-      strerror(errno));
+    sendto_ops_flag(UMODE_DEBUG, "Error opening %s: %s",
+			   filename,
+			   strerror(errno));
     return;
   }
 
@@ -407,12 +407,12 @@
 #if 0
       if(!find_special_conf(sptr->name,CONF_ULINE))
         {
-          sendto_realops("received Unauthorized kline from %s",sptr->name);
+          sendto_ops_flag(UMODE_SERVNOTICE, "received Unauthorized kline from %s",sptr->name);
           return 0;
         }
       else
         {
-          sendto_realops("received kline from %s", sptr->name);
+          sendto_ops_flag(UMODE_SERVNOTICE, "received kline from %s", sptr->name);
         }
 
 #endif
@@ -732,12 +732,12 @@
       rehashed = YES;
       dline_in_progress = NO;
       nextping = CurrentTime;
-      sendto_realops("%s added temporary %d min. K-Line for [%s@%s] [%s]",
-        rcptr ? rcptr->name : parv[0],
-        temporary_kline_time,
-        user,
-        host,
-        reason ? reason : "No reason");
+      sendto_ops_flag(UMODE_SERVNOTICE, "%s added temporary %d min. K-Line for [%s@%s] [%s]",
+			     rcptr ? rcptr->name : parv[0],
+			     temporary_kline_time,
+			     user,
+			     host,
+			     reason ? reason : "No reason");
       return 0;
     }
   else
@@ -758,11 +758,11 @@
   else
     add_mtrie_conf_entry(aconf,CONF_KILL);
 
-  sendto_realops("%s added K-Line for [%s@%s] [%s]",
-    rcptr ? rcptr->name : sptr->name,
-    user,
-    host,
-    reason ? reason : "No reason");
+  sendto_ops_flag(UMODE_SERVNOTICE, "%s added K-Line for [%s@%s] [%s]",
+			 rcptr ? rcptr->name : sptr->name,
+			 user,
+			 host,
+			 reason ? reason : "No reason");
 
   log(L_TRACE, "%s added K-Line for [%s@%s] [%s]",
       sptr->name, user, host, reason ? reason : "No reason");
@@ -1194,10 +1194,10 @@
 
   add_Dline(aconf);
 
-        sendto_realops("%s added D-Line for [%s] [%s]",
-                sptr->name,
-                host,
-                reason);
+  sendto_ops_flag(UMODE_SERVNOTICE, "%s added D-Line for [%s] [%s]",
+			 sptr->name,
+			 host,
+			 reason);
 
         log(L_TRACE, "%s added D-Line for [%s] [%s]", 
             sptr->name, host, reason);
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/m_links.c ircd-hybrid-6.0/src/m_links.c
--- ircd-hybrid-6.0.orig/src/m_links.c	Wed Jun 20 03:42:17 2001
+++ ircd-hybrid-6.0/src/m_links.c	Tue Jun 19 16:47:24 2001
@@ -157,7 +157,7 @@
 
   if (bogus_server)
     {
-      sendto_realops_flag(UMODE_SPY,
+      sendto_ops_flag(UMODE_SPY,
 			  "BOGUS LINKS '%s' requested by %s (%s@%s) [%s]",
 			  clean_string(clean_mask, (const unsigned char *) mask, 2 * HOSTLEN),
 			  sptr->name, sptr->username,
@@ -169,7 +169,7 @@
     mask = collapse(clean_string(clean_mask, (const unsigned char *) mask, 2 * HOSTLEN));
 
   if (MyConnect(sptr))
-    sendto_realops_flag(UMODE_SPY,
+    sendto_ops_flag(UMODE_SPY,
 			"LINKS '%s' requested by %s (%s@%s) [%s]",
 			mask, sptr->name, sptr->username,
 			sptr->host, sptr->user->server);
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/m_ltrace.c ircd-hybrid-6.0/src/m_ltrace.c
--- ircd-hybrid-6.0.orig/src/m_ltrace.c	Wed Jun 20 03:42:17 2001
+++ ircd-hybrid-6.0/src/m_ltrace.c	Tue Jun 19 16:47:29 2001
@@ -160,7 +160,7 @@
 
 
   if(MyClient(sptr))
-    sendto_realops_flag(UMODE_SPY, "ltrace requested by %s (%s@%s) [%s]",
+    sendto_ops_flag(UMODE_SPY, "ltrace requested by %s (%s@%s) [%s]",
 			sptr->name, sptr->username, sptr->host,
 			sptr->user->server);
 
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/m_oper.c ircd-hybrid-6.0/src/m_oper.c
--- ircd-hybrid-6.0.orig/src/m_oper.c	Wed Jun 20 03:42:17 2001
+++ ircd-hybrid-6.0/src/m_oper.c	Tue Jun 19 16:47:51 2001
@@ -135,7 +135,7 @@
   if ((IsServer(cptr) || IsMe(cptr)))
     {
       sendto_ops_flag(UMODE_DEBUG, "WTF: %s received OPER message for %s from server %s", 
-		      me.name, sptr->name, cptr->name);
+			     me.name, sptr->name, cptr->name);
       /* This doesn't work properly; it doesn't add them to the oper list locally.
 	SetBit(sptr->umodes,UMODE_OPER);
 	Count.oper++;
@@ -164,11 +164,11 @@
       sendto_one(sptr, form_str(ERR_NOOPERHOST), me.name, parv[0]);
 #if defined(FAILED_OPER_NOTICE) && defined(SHOW_FAILED_OPER_ID)
 #ifdef SHOW_FAILED_OPER_PASSWD
-      sendto_realops("Failed OPER attempt [%s(%s)] - identity mismatch: %s [%s@%s]",
-        name, password, sptr->name, sptr->username, sptr->host);
+      sendto_ops_flag(UMODE_SERVNOTICE, "Failed OPER attempt [%s(%s)] - identity mismatch: %s [%s@%s]",
+			     name, password, sptr->name, sptr->username, sptr->host);
 #else
-      sendto_realops("Failed OPER attempt - host mismatch by %s (%s@%s)",
-                     parv[0], sptr->username, sptr->host);
+      sendto_ops_flag(UMODE_SERVNOTICE, "Failed OPER attempt - host mismatch by %s (%s@%s)",
+			     parv[0], sptr->username, sptr->host);
 #endif /* SHOW_FAILED_OPER_PASSWD */
 #endif /* FAILED_OPER_NOTICE && SHOW_FAILED_OPER_ID */
       return 0;
@@ -227,9 +227,9 @@
       else
 	fdlist_add(sptr->fd, FDL_OPER);
 #ifdef CUSTOM_ERR
-      sendto_ops_flag_butone(NULL, UMODE_SERVNOTICE, "%s (%s@%s) just activated an %c-line, hmmm.", parv[0],
+      sendto_ops_flag(UMODE_SERVNOTICE, "%s (%s@%s) just activated an %c-line, hmmm.", parv[0],
 #else
-      sendto_ops_flag_butone(NULL, UMODE_SERVNOTICE, ("%s (%s@%s) is now operator (%c)", parv[0],
+      sendto_ops_flag(UMODE_SERVNOTICE, ("%s (%s@%s) is now operator (%c)", parv[0],
 #endif /* CUSTOM_ERR */
 						      sptr->username, sptr->host,
 						      IsLocOp(sptr) ? 'o' : 'O');
@@ -282,11 +282,11 @@
       sendto_one(sptr,form_str(ERR_PASSWDMISMATCH),me.name, parv[0]);
 #ifdef FAILED_OPER_NOTICE
 #ifdef SHOW_FAILED_OPER_PASSWD
-      sendto_realops("Failed OPER attempt [%s(%s)] - md5 passwd mismatch: %s [%s@%s]",
-        name, password, sptr->name, sptr->username, sptr->host);
+      sendto_ops_flag(UMODE_SERVNOTICE, "Failed OPER attempt [%s(%s)] - md5 passwd mismatch: %s [%s@%s]",
+			     name, password, sptr->name, sptr->username, sptr->host);
 #else
-      sendto_realops("Failed OPER attempt by %s (%s@%s)",
-                     parv[0], sptr->username, sptr->host);
+      sendto_ops_flag(UMODE_SERVNOTICE, "Failed OPER attempt by %s (%s@%s)",
+			     parv[0], sptr->username, sptr->host);
 #endif /* SHOW_FAILED_OPER_PASSWD */
 #endif
     }
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/m_pong.c ircd-hybrid-6.0/src/m_pong.c
--- ircd-hybrid-6.0.orig/src/m_pong.c	Wed Jun 20 03:42:17 2001
+++ ircd-hybrid-6.0/src/m_pong.c	Wed Jun 20 02:39:31 2001
@@ -123,8 +123,9 @@
     {
       if (!got_server_pong)
         {
-          sendto_ops_flag_butone(cptr, UMODE_SERVNOTICE, "%s acknowledged end of %s burst (%i sec)",
-                     sptr->name, &me.name, CurrentTime - sptr->firsttime);
+          sendto_ops_flag_butone(cptr, UMODE_SEEROUTING, "%s acknowledged end of %s burst (%i sec)",
+				 sptr->name, &me.name, CurrentTime - sptr->firsttime);
+	  sendto_ops_flag_butone_hidefrom(cptr, UMODE_SERVNOTICE, "Burst complete, %s has linked", sptr->name);
         }
       got_server_pong = 1;
     }
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/m_rehash.c ircd-hybrid-6.0/src/m_rehash.c
--- ircd-hybrid-6.0.orig/src/m_rehash.c	Wed Jun 20 03:42:17 2001
+++ ircd-hybrid-6.0/src/m_rehash.c	Tue Jun 19 16:47:58 2001
@@ -115,9 +115,9 @@
         {
           sendto_one(sptr, form_str(RPL_REHASHING), me.name, parv[0], "DNS");
 #ifdef CUSTOM_ERR
-          sendto_ops("%s is rehashing DNS while whistling innocently",
+          sendto_ops_flag(UMODE_SERVNOTICE, "%s is rehashing DNS while whistling innocently",
 #else
-          sendto_ops("%s is rehashing DNS",
+          sendto_ops_flag(UMODE_SERVNOTICE, "%s is rehashing DNS",
 #endif
                  parv[0]);
           restart_resolver();   /* re-read /etc/resolv.conf AGAIN?
@@ -129,9 +129,9 @@
           sendto_one(sptr, form_str(RPL_REHASHING), me.name, parv[0], "temp klines");
           flush_temp_klines();
 #ifdef CUSTOM_ERR
-          sendto_ops("%s is clearing temp klines while whistling innocently",
+          sendto_ops_flag(UMODE_SERVNOTICE, "%s is clearing temp klines while whistling innocently",
 #else
-          sendto_ops("%s is clearing temp klines",
+          sendto_ops_flag(UMODE_SERVNOTICE, "%s is clearing temp klines",
 #endif
                  parv[0]);
           found = YES;
@@ -142,9 +142,9 @@
           sendto_one(sptr, form_str(RPL_REHASHING), me.name, parv[0], "g-lines");
           flush_glines();
 #ifdef CUSTOM_ERR
-          sendto_ops("%s is clearing G-lines while whistling innocently",
+          sendto_ops_flag(UMODE_SERVNOTICE, "%s is clearing G-lines while whistling innocently",
 #else
-          sendto_ops("%s is clearing G-lines",
+          sendto_ops_flag(UMODE_SERVNOTICE, "%s is clearing G-lines",
 #endif
                  parv[0]);
           found = YES;
@@ -155,34 +155,34 @@
           sendto_one(sptr, form_str(RPL_REHASHING), me.name, parv[0], "garbage collecting");
           block_garbage_collect();
 #ifdef CUSTOM_ERR
-          sendto_ops("%s is garbage collecting while whistling innocently",
+          sendto_ops_flag(UMODE_SERVNOTICE, "%s is garbage collecting while whistling innocently",
 #else
-          sendto_ops("%s is garbage collecting",
+          sendto_ops_flag(UMODE_SERVNOTICE, "%s is garbage collecting",
 #endif
                  parv[0]);
           found = YES;
         }
       else if(irccmp(parv[1],"MOTD") == 0)
         {
-          sendto_ops("%s is forcing re-reading of MOTD file",parv[0]);
+          sendto_ops_flag(UMODE_SERVNOTICE, "%s is forcing re-reading of MOTD file",parv[0]);
           ReadMessageFile( &ConfigFileEntry.motd );
           found = YES;
         }
       else if(irccmp(parv[1],"OMOTD") == 0)
         {
-          sendto_ops("%s is forcing re-reading of OPER MOTD file",parv[0]);
+          sendto_ops_flag(UMODE_SERVNOTICE, "%s is forcing re-reading of OPER MOTD file",parv[0]);
           ReadMessageFile( &ConfigFileEntry.opermotd );
           found = YES;
         }
       else if(irccmp(parv[1],"HELP") == 0)
         {
-          sendto_ops("%s is forcing re-reading of oper help file",parv[0]);
+          sendto_ops_flag(UMODE_SERVNOTICE, "%s is forcing re-reading of oper help file",parv[0]);
           ReadMessageFile( &ConfigFileEntry.helpfile );
           found = YES;
         }
       else if(irccmp(parv[1],"dump") == 0)
         {
-          sendto_ops("%s is dumping conf file",parv[0]);
+          sendto_ops_flag(UMODE_SERVNOTICE, "%s is dumping conf file",parv[0]);
           rehash_dump(sptr);
           found = YES;
         }
@@ -192,9 +192,9 @@
                      ConfigFileEntry.configfile);
           /* this does a full rehash right now, so report it as such */
 #ifdef CUSTOM_ERR
-          sendto_ops("%s is rehashing dlines from server config file while whistling innocently",
+          sendto_ops_flag(UMODE_SERVNOTICE, "%s is rehashing dlines from server config file while whistling innocently",
 #else
-          sendto_ops("%s is rehashing dlines from server config file",
+          sendto_ops_flag(UMODE_SERVNOTICE, "%s is rehashing dlines from server config file",
 #endif
                      parv[0]);
           log(L_NOTICE, "REHASH From %s\n", get_client_name(sptr, HIDE_IP));
@@ -225,9 +225,9 @@
       sendto_one(sptr, form_str(RPL_REHASHING), me.name, parv[0],
                  ConfigFileEntry.configfile);
 #ifdef CUSTOM_ERR
-      sendto_ops("%s is rehashing server config file while whistling innocently",
+      sendto_ops_flag(UMODE_SERVNOTICE, "%s is rehashing server config file while whistling innocently",
 #else
-      sendto_ops("%s is rehashing server config file",
+      sendto_ops_flag(UMODE_SERVNOTICE, "%s is rehashing server config file",
 #endif
                  parv[0]);
       log(L_NOTICE, "REHASH From %s\n", get_client_name(sptr, SHOW_IP));
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/m_server.c ircd-hybrid-6.0/src/m_server.c
--- ircd-hybrid-6.0.orig/src/m_server.c	Wed Jun 20 03:42:17 2001
+++ ircd-hybrid-6.0/src/m_server.c	Tue Jun 19 16:48:07 2001
@@ -163,9 +163,9 @@
        */
       if (IsServer(cptr))
         {
-          sendto_realops("SERVER command from remote user %s -- %s is a hacked server",
-                          get_client_name(sptr,HIDE_IP),
-                          get_client_name(cptr,HIDE_IP));
+          sendto_ops_flag(UMODE_SERVNOTICE, "SERVER command from remote user %s -- %s is a hacked server",
+				 get_client_name(sptr,HIDE_IP),
+				 get_client_name(cptr,HIDE_IP));
         }
       else
         {
@@ -227,8 +227,8 @@
       if (find_conf_by_name(host, CONF_NOCONNECT_SERVER) == NULL)
         {
 #ifdef WARN_NO_NLINE
-          sendto_realops("Link %s Server %s dropped, no N: line",
-                         get_client_name(cptr, FALSE), host);
+          sendto_ops_flag(UMODE_SERVNOTICE, "Link %s Server %s dropped, no N: line",
+				 get_client_name(cptr, FALSE), host);
 #endif
           return exit_client(cptr, cptr, cptr, "NO N line");
         }
@@ -236,8 +236,8 @@
 
   if (MyConnect(cptr) && (GlobalSetOptions.autoconn == 0))
     {
-      sendto_realops("WARNING AUTOCONN is 0, Closing %s",
-                 get_client_name(cptr, FALSE));
+      sendto_ops_flag(UMODE_SERVNOTICE, "WARNING AUTOCONN is 0, Closing %s",
+			     get_client_name(cptr, FALSE));
       return exit_client(cptr, cptr, cptr, "AUTOCONNS off");
     }
 
@@ -257,8 +257,8 @@
       sendto_one(bcptr,"ERROR :Server %s already exists", host);
       if (bcptr == cptr)
       {
-        sendto_realops("Link %s cancelled, server %s already exists",
-                   get_client_name(bcptr, FALSE), host);
+        sendto_ops_flag(UMODE_SERVNOTICE, "Link %s cancelled, server %s already exists",
+			       get_client_name(bcptr, FALSE), host);
         return exit_client(bcptr, bcptr, &me, "Server Exists");
       }
       /*
@@ -272,8 +272,8 @@
        *  - comstud
        */
       strcpy(nbuf, get_client_name(bcptr, FALSE));
-      sendto_realops("Link %s cancelled, server %s reintroduced by %s",
-                nbuf, host, get_client_name(cptr, FALSE));
+      sendto_ops_flag(UMODE_SERVNOTICE, "Link %s cancelled, server %s reintroduced by %s",
+			     nbuf, host, get_client_name(cptr, FALSE));
       exit_client(bcptr, bcptr, &me, "Server Exists");
     }
 
@@ -293,7 +293,7 @@
        * for a while and servers to send stuff to the wrong place.
        */
       sendto_one(cptr,"ERROR :Nickname %s already exists!", host);
-      sendto_ops("Link %s cancelled: Server/nick collision on %s",
+      sendto_ops_flag(UMODE_SERVNOTICE, "Link %s cancelled: Server/nick collision on %s",
                  /* inpath */ get_client_name(cptr,FALSE), host);
       return exit_client(cptr, cptr, cptr, "Nick as Server");
     }
@@ -319,9 +319,9 @@
       if ((aconf = find_conf_host(cptr->confs, host, CONF_LEAF)) &&
           (!aconf->port || (hop > aconf->port)))
         {
-          sendto_realops("Leaf-only link %s->%s - Closing",
-                     get_client_name(cptr,  FALSE),
-                     aconf->host ? aconf->host : "*");
+          sendto_ops_flag(UMODE_SERVNOTICE, "Leaf-only link %s->%s - Closing",
+				 get_client_name(cptr,  FALSE),
+				 aconf->host ? aconf->host : "*");
           sendto_one(cptr, "ERROR :Leaf-only link, sorry.");
           return exit_client(cptr, cptr, cptr, "Leaf Only");
         }
@@ -329,9 +329,9 @@
       if (!(aconf = find_conf_host(cptr->confs, host, CONF_HUB)) ||
           (aconf->port && (hop > aconf->port)) )
         {
-          sendto_realops("Non-Hub link %s introduced %s(%s).",
-                     get_client_name(cptr,  FALSE), host,
-                     aconf ? (aconf->host ? aconf->host : "*") : "!");
+          sendto_ops_flag(UMODE_SERVNOTICE, "Non-Hub link %s introduced %s(%s).",
+				 get_client_name(cptr,  FALSE), host,
+				 aconf ? (aconf->host ? aconf->host : "*") : "!");
           sendto_one(cptr, "ERROR :%s has no H: line for %s.",
                      get_client_name(cptr,  FALSE), host);
           return exit_client(cptr, cptr, cptr, "Too many servers");
@@ -364,8 +364,8 @@
             continue;
           if (!(aconf = bcptr->serv->nline))
             {
-              sendto_realops("Lost N-line for %s on %s. Closing",
-                         get_client_name(cptr, FALSE), host);
+              sendto_ops_flag(UMODE_SERVNOTICE, "Lost N-line for %s on %s. Closing",
+				     get_client_name(cptr, FALSE), host);
               return exit_client(cptr, cptr, cptr, "Lost N line");
             }
           if (match(my_name_for_link(me.name, aconf), acptr->name))
@@ -376,8 +376,8 @@
                          
         }
       
-      sendto_realops_flag(UMODE_EXTERNAL, "Server %s being introduced by %s",
-			  acptr->name, sptr->name);
+      sendto_ops_flag(UMODE_EXTERNAL, "Server %s being introduced by %s",
+			     acptr->name, sptr->name);
       return 0;
     }
 
@@ -394,8 +394,8 @@
    */
   if (!DoesTS(cptr))
     {
-      sendto_realops("Link %s dropped, non-TS server",
-                 get_client_name(cptr, FALSE));
+      sendto_ops_flag(UMODE_SERVNOTICE, "Link %s dropped, non-TS server",
+			     get_client_name(cptr, FALSE));
       return exit_client(cptr, cptr, cptr, "Non-TS server");
     }
 
@@ -411,7 +411,7 @@
     return server_estab(cptr);
 
   ++ServerStats->is_ref;
-  sendto_ops("Received unauthorized connection from %s.",
+  sendto_ops_flag(UMODE_SERVNOTICE, "Received unauthorized connection from %s.",
               get_client_host(cptr));
   return exit_client(cptr, cptr, cptr, "No C/N conf lines");
 }
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/m_set.c ircd-hybrid-6.0/src/m_set.c
--- ircd-hybrid-6.0.orig/src/m_set.c	Wed Jun 20 03:42:17 2001
+++ ircd-hybrid-6.0/src/m_set.c	Tue Jun 19 16:48:12 2001
@@ -207,8 +207,8 @@
                   return 0;
                 }
               MAXCLIENTS = new_value;
-              sendto_realops("%s!%s@%s set new MAXCLIENTS to %d (%d current)",
-                             parv[0], sptr->username, sptr->host, MAXCLIENTS, Count.local);
+              sendto_ops_flag(UMODE_SERVNOTICE, "%s!%s@%s set new MAXCLIENTS to %d (%d current)",
+				     parv[0], sptr->username, sptr->host, MAXCLIENTS, Count.local);
               return 0;
             }
           sendto_one(sptr, ":%s NOTICE %s :Current Maxclients = %d (%d)",
@@ -223,9 +223,9 @@
 
               if(!irccmp(parv[2],"ALL"))
                 {
-                  sendto_realops(
-                                 "%s has changed AUTOCONN ALL to %i",
-                                 parv[0], newval);
+                  sendto_ops_flag(UMODE_SERVNOTICE,
+					 "%s has changed AUTOCONN ALL to %i",
+					 parv[0], newval);
                   GlobalSetOptions.autoconn = newval;
                 }
               else
@@ -246,14 +246,14 @@
                 int newval = atoi(parv[2]);
                 if(newval == 0)
                   {
-                    sendto_realops("%s has disabled IDLE_CHECK",
-                                   parv[0]);
+                    sendto_ops_flag(UMODE_SERVNOTICE, "%s has disabled IDLE_CHECK",
+					   parv[0]);
                     IDLETIME = 0;
                   }
                 else
                   {
-                    sendto_realops("%s has changed IDLETIME to %i",
-                                   parv[0], newval);
+                    sendto_ops_flag(UMODE_SERVNOTICE, "%s has changed IDLETIME to %i",
+					   parv[0], newval);
                     IDLETIME = (newval*60);
                   }
               }
@@ -281,8 +281,8 @@
 #ifdef DEATHFLUD
                 if (FLUDNUM >= KILLNUM) KILLNUM = FLUDNUM + 2;
 #endif
-                sendto_realops("%s has changed FLUDNUM to %i",
-                               parv[0], FLUDNUM);
+                sendto_ops_flag(UMODE_SERVNOTICE, "%s has changed FLUDNUM to %i",
+				       parv[0], FLUDNUM);
               }
             else
               {
@@ -304,8 +304,8 @@
                     return 0;
                   }       
                 FLUDTIME = newval;
-                sendto_realops("%s has changed FLUDTIME to %i",
-                               parv[0], FLUDTIME);
+                sendto_ops_flag(UMODE_SERVNOTICE, "%s has changed FLUDTIME to %i",
+				       parv[0], FLUDTIME);
               }
             else
               {
@@ -329,13 +329,13 @@
                 FLUDBLOCK = newval;
                 if(FLUDBLOCK == 0)
                   {
-                    sendto_realops("%s has disabled flud detection/protection",
-                                   parv[0]);
+                    sendto_ops_flag(UMODE_SERVNOTICE, "%s has disabled flud detection/protection",
+					   parv[0]);
                   }
                 else
                   {
-                    sendto_realops("%s has changed FLUDBLOCK to %i",
-                                   parv[0],FLUDBLOCK);
+                    sendto_ops_flag(UMODE_SERVNOTICE, "%s has changed FLUDBLOCK to %i",
+					   parv[0],FLUDBLOCK);
                   }
               }
             else
@@ -359,8 +359,8 @@
                     return 0;
                   }       
                 KILLNUM = newval;
-                sendto_realops("%s has changed KILLNUM to %i, fear",
-                               parv[0], KILLNUM);
+                sendto_ops_flag(UMODE_SERVNOTICE, "%s has changed KILLNUM to %i, fear",
+				       parv[0], KILLNUM);
               }
             else
               {
@@ -386,11 +386,11 @@
                   }       
                 DRONETIME = newval;
                 if(DRONETIME == 0)
-                  sendto_realops("%s has disabled the ANTI_DRONE_FLOOD code",
+                  sendto_ops_flag(UMODE_SERVNOTICE, "%s has disabled the ANTI_DRONE_FLOOD code",
                                  parv[0]);
                 else
-                  sendto_realops("%s has changed DRONETIME to %i",
-                                 parv[0], DRONETIME);
+                  sendto_ops_flag(UMODE_SERVNOTICE, "%s has changed DRONETIME to %i",
+					 parv[0], DRONETIME);
               }
             else
               {
@@ -412,8 +412,8 @@
                   return 0;
                 }       
               DRONECOUNT = newval;
-              sendto_realops("%s has changed DRONECOUNT to %i",
-                             parv[0], DRONECOUNT);
+              sendto_ops_flag(UMODE_SERVNOTICE, "%s has changed DRONECOUNT to %i",
+				     parv[0], DRONECOUNT);
             }
           else
             {
@@ -444,7 +444,7 @@
                                  me.name, parv[0], MAX_SERVER_SPLIT_RECOVERY_TIME);
                       newval = MAX_SERVER_SPLIT_RECOVERY_TIME;
                     }
-                  sendto_realops("%s has changed SPLITDELAY to %i",
+                  sendto_ops_flag(UMODE_SERVNOTICE, "%s has changed SPLITDELAY to %i",
                                  parv[0], newval);
                   SPLITDELAY = (newval*60);
                   if(SPLITDELAY == 0)
@@ -484,7 +484,7 @@
                              me.name, parv[0],SPLIT_SMALLNET_SIZE);
                   return 0;
                 } */
-              sendto_realops("%s has changed SPLITNUM to %i",
+              sendto_ops_flag(UMODE_SERVNOTICE, "%s has changed SPLITNUM to %i",
                              parv[0], newval);
               SPLITNUM = newval;
             }
@@ -509,7 +509,7 @@
                                me.name, parv[0]);
                     return 0;
                   }
-                sendto_realops("%s has changed SPLITUSERS to %i",
+                sendto_ops_flag(UMODE_SERVNOTICE,"%s has changed SPLITUSERS to %i",
                                parv[0], newval);
                 SPLITUSERS = newval;
               }
@@ -537,7 +537,7 @@
                   }
                 if(newval == 0)
                   {
-                    sendto_realops("%s has disabled ANTI_SPAMBOT",
+                    sendto_ops_flag(UMODE_SERVNOTICE,"%s has disabled ANTI_SPAMBOT",
                                    parv[0]);
                     return 0;
                   }
@@ -546,7 +546,7 @@
                   SPAMNUM = MIN_SPAM_NUM;
                 else
                   SPAMNUM = newval;
-                sendto_realops("%s has changed SPAMNUM to %i",
+                sendto_ops_flag(UMODE_SERVNOTICE,"%s has changed SPAMNUM to %i",
                                parv[0], SPAMNUM);
               }
             else
@@ -573,7 +573,7 @@
                 SPAMTIME = MIN_SPAM_TIME;
               else
                 SPAMTIME = newval;
-              sendto_realops("%s has changed SPAMTIME to %i",
+              sendto_ops_flag(UMODE_SERVNOTICE,"%s has changed SPAMTIME to %i",
                              parv[0], SPAMTIME);
             }
           else
@@ -600,7 +600,7 @@
                 newval = L_DEBUG;
               set_log_level(newval); 
               log_level_as_string = get_log_level_as_string(newval);
-              sendto_realops("%s has changed LOG level to %i (%s)",
+              sendto_ops_flag(UMODE_SERVNOTICE,"%s has changed LOG level to %i (%s)",
                              parv[0], newval, log_level_as_string);
             }
           else
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/m_setname.c ircd-hybrid-6.0/src/m_setname.c
--- ircd-hybrid-6.0.orig/src/m_setname.c	Wed Jun 20 03:42:17 2001
+++ ircd-hybrid-6.0/src/m_setname.c	Tue Jun 19 16:48:21 2001
@@ -147,9 +147,9 @@
 
   if ((acptr = find_person(target, NULL))) {
     sendto_ops_flag(UMODE_SPY,
-		    "%s is rehosting %s (%s@%s) to \"%s\" while whistling innocently",
-		    sptr->name, acptr->name,
-		    acptr->username, acptr->host, hostname);
+			   "%s is rehosting %s (%s@%s) to \"%s\" while whistling innocently",
+			   sptr->name, acptr->name,
+			   acptr->username, acptr->host, hostname);
       if (sptr == acptr) {
          if (MyClient(acptr))
          sendto_one(acptr, ":%s NOTICE %s :your hostname is now set to \"%s\"",
@@ -226,9 +226,9 @@
 
   if ((acptr = find_person(target, NULL))) {
     sendto_ops_flag(UMODE_SPY,
-		    "%s is identing %s (%s@%s) to \"%s\" while whistling innocently",
-		    sptr->name, acptr->name,
-		    acptr->username, acptr->host, username);
+			   "%s is identing %s (%s@%s) to \"%s\" while whistling innocently",
+			   sptr->name, acptr->name,
+			   acptr->username, acptr->host, username);
       if (sptr == acptr) {
          if (MyClient(acptr))
          sendto_one(acptr, ":%s NOTICE %s :your ident is now set to \"%s\"",
@@ -298,8 +298,8 @@
 
   if ((acptr = find_server(target))) {
     sendto_ops_flag(UMODE_SERVNOTICE,
-		    "%s is making %s be \"%s\" while whistling innocently",
-		    sptr->name, acptr->name, realname);
+			   "%s is making %s be \"%s\" while whistling innocently",
+			   sptr->name, acptr->name, realname);
     sendto_serv_butone(cptr, ":%s SETNAME %s :%s",
                        sptr->name,
                        target,
@@ -307,9 +307,9 @@
     ircsprintf(acptr->info, "%s", realname);
   } else if ((acptr = find_person(target, NULL))) {
     sendto_ops_flag(UMODE_SPY,
-		    "%s is naming %s (%s@%s) to \"%s\" while whistling innocently",
-		    sptr->name, acptr->name,
-		    acptr->username, acptr->host, realname);
+			   "%s is naming %s (%s@%s) to \"%s\" while whistling innocently",
+			   sptr->name, acptr->name,
+			   acptr->username, acptr->host, realname);
       if (sptr == acptr) {
          if (MyClient(acptr))
          sendto_one(acptr, ":%s NOTICE %s :your realname is now set to \"%s\"",
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/m_squit.c ircd-hybrid-6.0/src/m_squit.c
--- ircd-hybrid-6.0.orig/src/m_squit.c	Wed Jun 20 03:42:17 2001
+++ ircd-hybrid-6.0/src/m_squit.c	Tue Jun 19 16:48:26 2001
@@ -224,14 +224,14 @@
   */
   if (MyConnect(acptr) && IsServer(cptr))
     {
-      sendto_ops_flag_butone(NULL, UMODE_SERVNOTICE,
+      sendto_ops_flag(UMODE_SERVNOTICE,
 			     "%s received SQUIT %s from %s (%s)",
 			     me.name, server, get_client_name(sptr,FALSE), comment);
       log(L_TRACE, "SQUIT From %s : %s (%s)", parv[0], server, comment);
     }
   else if (MyConnect(acptr))
-    sendto_ops("Received SQUIT %s from %s (%s)",
-               acptr->name, get_client_name(sptr,FALSE), comment);
+    sendto_ops_flag(UMODE_SERVNOTICE, "Received SQUIT %s from %s (%s)",
+			   acptr->name, get_client_name(sptr,FALSE), comment);
   
   return exit_client(cptr, acptr, sptr, comment);
 }
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/m_stats.c ircd-hybrid-6.0/src/m_stats.c
--- ircd-hybrid-6.0.orig/src/m_stats.c	Wed Jun 20 03:42:17 2001
+++ ircd-hybrid-6.0/src/m_stats.c	Tue Jun 19 16:49:08 2001
@@ -518,7 +518,7 @@
     {
       if ( (stat == 'L') || (stat == 'l') )
         {
-          sendto_realops_flag(UMODE_SPY,
+          sendto_ops_flag(UMODE_SPY,
 			      "STATS %c requested by %s (%s@%s) [%s] on %s%s",
 			      stat,
 			      sptr->name,
@@ -531,7 +531,7 @@
         }
       else
         {
-          sendto_realops_flag(UMODE_SPY,
+          sendto_ops_flag(UMODE_SPY,
 			      "STATS %c requested by %s (%s@%s) [%s]%s",
 			      stat,
 			      sptr->name,
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/m_svinfo.c ircd-hybrid-6.0/src/m_svinfo.c
--- ircd-hybrid-6.0.orig/src/m_svinfo.c	Wed Jun 20 03:42:17 2001
+++ ircd-hybrid-6.0/src/m_svinfo.c	Tue Jun 19 16:48:30 2001
@@ -117,8 +117,8 @@
        * TS_ONLY we can't fall back to the non-TS protocol so
        * we drop the link  -orabidoo
        */
-      sendto_realops("Link %s dropped, wrong TS protocol version (%s,%s)",
-                 get_client_name(sptr, FALSE), parv[1], parv[2]);
+      sendto_ops_flag(UMODE_SERVNOTICE, "Link %s dropped, wrong TS protocol version (%s,%s)",
+			     get_client_name(sptr, FALSE), parv[1], parv[2]);
       return exit_client(sptr, sptr, sptr, "Incompatible TS version");
     }
 
@@ -131,17 +131,17 @@
 
   if (deltat > TS_MAX_DELTA)
     {
-      sendto_realops(
-       "Link %s dropped, excessive TS delta (my TS=%d, their TS=%d, delta=%d)",
-                 get_client_name(sptr, FALSE), CurrentTime, theirtime,deltat);
+      sendto_ops_flag(UMODE_SERVNOTICE, 
+			     "Link %s dropped, excessive TS delta (my TS=%d, their TS=%d, delta=%d)",
+			     get_client_name(sptr, FALSE), CurrentTime, theirtime,deltat);
       return exit_client(sptr, sptr, sptr, "Excessive TS delta");
     }
 
   if (deltat > TS_WARN_DELTA)
     { 
-      sendto_realops(
-                 "Link %s notable TS delta (my TS=%d, their TS=%d, delta=%d)",
-                 get_client_name(sptr, FALSE), CurrentTime, theirtime, deltat);
+      sendto_ops_flag(UMODE_SERVNOTICE, 
+			     "Link %s notable TS delta (my TS=%d, their TS=%d, delta=%d)",
+			     get_client_name(sptr, FALSE), CurrentTime, theirtime, deltat);
     }
 
   return 0;
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/m_trace.c ircd-hybrid-6.0/src/m_trace.c
--- ircd-hybrid-6.0.orig/src/m_trace.c	Wed Jun 20 03:42:17 2001
+++ ircd-hybrid-6.0/src/m_trace.c	Tue Jun 19 16:48:36 2001
@@ -181,9 +181,9 @@
     }
 
   if(MyClient(sptr))
-    sendto_realops_flag(UMODE_SPY, "trace requested by %s (%s@%s) [%s]",
-			sptr->name, sptr->username, sptr->host,
-			sptr->user->server);
+    sendto_ops_flag(UMODE_SPY, "trace requested by %s (%s@%s) [%s]",
+			   sptr->name, sptr->username, sptr->host,
+			   sptr->user->server);
 
 
   doall = (parv[1] && (parc > 1)) ? match(tname, me.name): TRUE;
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/m_unkline.c ircd-hybrid-6.0/src/m_unkline.c
--- ircd-hybrid-6.0.orig/src/m_unkline.c	Wed Jun 20 03:42:17 2001
+++ ircd-hybrid-6.0/src/m_unkline.c	Tue Jun 19 16:48:40 2001
@@ -144,8 +144,8 @@
       if (!IsServer(cptr))
         sendto_one(sptr, ":%s NOTICE %s :Un-klined [%s@%s] from temporary k-lines",
                    me.name, parv[0],user, host);
-      sendto_ops("%s has removed the temporary K-Line for: [%s@%s]",
-                 parv[0], user, host );
+      sendto_ops_flag(UMODE_SERVNOTICE, "%s has removed the temporary K-Line for: [%s@%s]",
+			     parv[0], user, host );
 
       log(L_NOTICE, "%s removed temporary K-Line for [%s@%s]",
           parv[0], user, host);
@@ -340,8 +340,8 @@
   if (!IsServer(cptr))
     sendto_one(sptr, ":%s NOTICE %s :K-Line for [%s@%s] is removed", 
              me.name, parv[0], user,host);
-  sendto_realops("%s has removed the K-Line for: [%s@%s]",
-             parv[0], user, host);
+  sendto_ops_flag(UMODE_SERVNOTICE, "%s has removed the K-Line for: [%s@%s]",
+			 parv[0], user, host);
 
   log(L_NOTICE, "%s removed K-Line for [%s@%s]", parv[0], user, host);
   return 0; 
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/m_wallops.c ircd-hybrid-6.0/src/m_wallops.c
--- ircd-hybrid-6.0.orig/src/m_wallops.c	Wed Jun 20 03:42:17 2001
+++ ircd-hybrid-6.0/src/m_wallops.c	Wed Jun 20 02:24:39 2001
@@ -99,9 +99,15 @@
 { 
   char* message;
   int flag=0;
+  int spoof = 0;
 
   if (parc == 3)
     {
+      if (*parv[1] == '*')
+	{
+	  parv[1]++;
+	  spoof = 1;
+	}
       flag = atoi(parv[1]);
       message = parv[2];
     }
@@ -129,7 +135,10 @@
 
   if (parc == 3)
     {
-      sendto_ops_flag_butone(cptr, flag, "%s", message);
+      if (spoof)
+	sendto_ops_flag_butone_hidefrom(cptr, flag, "%s", message);
+      else
+	sendto_ops_flag_butone_from(cptr, flag, sptr, "%s", message);
       return 0;
     }
 
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/motd.c ircd-hybrid-6.0/src/motd.c
--- ircd-hybrid-6.0.orig/src/motd.c	Wed Jun 20 03:42:17 2001
+++ ircd-hybrid-6.0/src/motd.c	Tue Jun 19 16:48:47 2001
@@ -67,7 +67,7 @@
   if (hunt_server(cptr, sptr, ":%s MOTD :%s", 1,parc,parv)!=HUNTED_ISME)
     return 0;
 
-  sendto_realops_flag(UMODE_SPY, "motd requested by %s (%s@%s) [%s]",
+  sendto_ops_flag(UMODE_SPY, "motd requested by %s (%s@%s) [%s]",
 		      sptr->name, sptr->username, sptr->host,
 		      sptr->user->server);
 
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/mtrie_conf.c ircd-hybrid-6.0/src/mtrie_conf.c
--- ircd-hybrid-6.0.orig/src/mtrie_conf.c	Wed Jun 20 03:42:17 2001
+++ ircd-hybrid-6.0/src/mtrie_conf.c	Tue Jun 19 16:48:52 2001
@@ -321,7 +321,7 @@
     }
   else
     {
-      sendto_realops("Bug: in find_or_add_host_piece. yay.");
+      sendto_ops_flag(UMODE_DEBUG, "BUG: in find_or_add_host_piece. yay.");
       return(NULL);
     }
   /* NOT REACHED */
@@ -483,7 +483,7 @@
     {
       /*
        */
-      sendto_realops("Bug in mtrie_conf.c last_ptr found NULL");
+      sendto_ops_flag(UMODE_DEBUG, "BUG: in mtrie_conf.c last_ptr found NULL");
     }
 
   return;
@@ -1740,6 +1740,6 @@
 
   get_printable_conf(aconf, &name, &host, &pass, &user, &port);
 
-  sendto_realops("DUP: %c: (%s@%s) pass %s name %s port %d",
-                 type,user,host,pass,name,port);
+  sendto_ops_flag(UMODE_SERVNOTICE, "DUP: %c: (%s@%s) pass %s name %s port %d",
+			 type,user,host,/*pass*/"",name,port); /* Uhh... let's not broadcast passwords. Thankyou. -- asuffield */
 }
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/oratime.c ircd-hybrid-6.0/src/oratime.c
--- ircd-hybrid-6.0.orig/src/oratime.c	Sat Nov 18 19:11:13 2000
+++ ircd-hybrid-6.0/src/oratime.c	Tue Jun 19 16:48:56 2001
@@ -61,7 +61,7 @@
 
 void orat_report(void)
 {
-  sendto_realops("Time spent: %ld ms", tsdms);
+  sendto_ops_flag(UMODE_DEBUG, "Time spent: %ld ms", tsdms);
 }
 
 #endif /* ORATIMING */
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/parse.c ircd-hybrid-6.0/src/parse.c
--- ircd-hybrid-6.0.orig/src/parse.c	Wed Jun 20 03:42:17 2001
+++ ircd-hybrid-6.0/src/parse.c	Tue Jun 19 16:49:15 2001
@@ -520,19 +520,19 @@
    */
   if (IsServer(sptr) || IsMe(sptr))
     {
-      sendto_realops_flag(UMODE_SERVNOTICE, "Message for %s[%s] from %s",
+      sendto_ops_flag(UMODE_SERVNOTICE, "Message for %s[%s] from %s",
 			  sptr->name, sptr->from->name,
 			  get_client_name(cptr, TRUE));
       if (IsServer(cptr))
         {
-          sendto_realops_flag(UMODE_SERVNOTICE,
+          sendto_ops_flag(UMODE_SERVNOTICE,
 			      "Not dropping server %s (%s) for Fake Direction",
 			      cptr->name, sptr->name);
           return -1;
         }
 
       if (IsClient(cptr))
-        sendto_realops_flag(UMODE_SERVNOTICE,
+        sendto_ops_flag(UMODE_SERVNOTICE,
 			    "Would have dropped client %s (%s@%s) [%s from %s]",
 			    cptr->name, cptr->username, cptr->host,
 			    cptr->user->server, cptr->from->name);
@@ -556,7 +556,7 @@
     if (DoesTS(cptr))
       {
         if (sptr->user)
-          sendto_realops_flag(UMODE_DEBUG,
+          sendto_ops_flag(UMODE_DEBUG,
 			      "Message for %s[%s@%s!%s] from %s (TS, ignored)",
 			      sptr->name, sptr->username, sptr->host,
 			      sptr->from->name, get_client_name(cptr, TRUE));
@@ -566,7 +566,7 @@
       {
         if (sptr->user)
           {
-            sendto_realops_flag(UMODE_DEBUG,
+            sendto_ops_flag(UMODE_DEBUG,
 				"Message for %s[%s@%s!%s] from %s",
 				sptr->name, sptr->username, sptr->host,
 				sptr->from->name, get_client_name(cptr, TRUE));
@@ -592,7 +592,7 @@
 
   if (IsClient(cptr))
     {
-      sendto_realops_flag(UMODE_DEBUG,
+      sendto_ops_flag(UMODE_DEBUG,
 			  "Weirdness: Unknown client prefix (%s) from %s, Ignoring %s",
 			  buffer,
 			  get_client_name(cptr, FALSE), sender);
@@ -615,8 +615,8 @@
                get_client_name(cptr, FALSE));
   else
     {
-      sendto_realops_flag(UMODE_DEBUG,
-			  "Unknown prefix (%s) from %s, Squitting %s", buffer, get_client_name(cptr, FALSE), sender);
+      sendto_ops_flag(UMODE_DEBUG,
+			     "Unknown prefix (%s) from %s, Squitting %s", buffer, get_client_name(cptr, FALSE), sender);
       sendto_one(cptr, ":%s SQUIT %s :(Unknown prefix (%s) from %s)",
                  me.name, sender, buffer, get_client_name(cptr, FALSE));
     }
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/restart.c ircd-hybrid-6.0/src/restart.c
--- ircd-hybrid-6.0.orig/src/restart.c	Wed Jun 20 03:42:13 2001
+++ ircd-hybrid-6.0/src/restart.c	Tue Jun 19 20:01:00 2001
@@ -10,6 +10,7 @@
 #include "struct.h"
 #include "s_debug.h"
 #include "s_log.h"
+#include "client.h"
 
 #include <unistd.h>
 
@@ -34,7 +35,7 @@
 {
   int i;
   
-  sendto_ops("Aieeeee!!!  Restarting server... memory: %d", get_maxrss());
+  sendto_ops_flag(UMODE_SERVNOTICE, "Aieeeee!!!  Restarting server... memory: %d", get_maxrss());
 
   log(L_NOTICE, "Restarting server...");
   flush_connections(0);
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/s_auth.c ircd-hybrid-6.0/src/s_auth.c
--- ircd-hybrid-6.0.orig/src/s_auth.c	Wed Jun 20 03:42:17 2001
+++ ircd-hybrid-6.0/src/s_auth.c	Tue Jun 19 16:49:24 2001
@@ -258,8 +258,8 @@
     return 0;
   }
   if ((MAXCONNECTIONS - 10) < fd) {
-    sendto_realops("Can't allocate fd for auth on %s",
-                get_client_name(auth->client, FALSE));
+    sendto_ops_flag(UMODE_SERVNOTICE, "Can't allocate fd for auth on %s",
+			   get_client_name(auth->client, FALSE));
 
     close(fd);
     return 0;
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/s_bsd.c ircd-hybrid-6.0/src/s_bsd.c
--- ircd-hybrid-6.0.orig/src/s_bsd.c	Wed Jun 20 03:42:17 2001
+++ ircd-hybrid-6.0/src/s_bsd.c	Tue Jun 19 16:49:29 2001
@@ -171,7 +171,7 @@
 {
   who = (who) ? who : "";
 
-  sendto_realops_flag(UMODE_DEBUG, text, who, strerror(error));
+  sendto_ops_flag(UMODE_DEBUG, text, who, strerror(error));
 
   log(L_ERROR, text, who, strerror(error));
 }
@@ -191,7 +191,7 @@
     connect_server(aconf, 0, reply);
   }
   else
-    sendto_realops("Connect to %s failed: host lookup", aconf->host);
+    sendto_ops_flag(UMODE_SERVNOTICE, "Connect to %s failed: host lookup", aconf->host);
 }
 
 /*
@@ -364,13 +364,13 @@
   c_conf = find_conf_name(cptr->confs, cptr->name, CONF_CONNECT_SERVER);
   if (!c_conf)
     {
-      sendto_realops("Lost C-Line for %s", get_client_name(cptr,FALSE));
+      sendto_ops_flag(UMODE_SERVNOTICE, "Lost C-Line for %s", get_client_name(cptr,FALSE));
       return 0;
     }
   n_conf = find_conf_name(cptr->confs, cptr->name, CONF_NOCONNECT_SERVER);
   if (!n_conf)
     {
-      sendto_realops("Lost N-Line for %s", get_client_name(cptr,FALSE));
+      sendto_ops_flag(UMODE_SERVNOTICE, "Lost N-Line for %s", get_client_name(cptr,FALSE));
       return 0;
     }
   
@@ -413,7 +413,7 @@
 
   if (cptr->fd >= (HARD_FDLIMIT - 10))
     {
-      sendto_realops("No more connections allowed (%s)", cptr->name);
+      sendto_ops_flag(UMODE_SERVNOTICE,"No more connections allowed (%s)", cptr->name);
       return 0;
     }
 
@@ -507,7 +507,7 @@
    */
   if ((cptr = find_server(aconf->name)))
     {
-      sendto_realops("Server %s already present from %s",
+      sendto_ops_flag(UMODE_SERVNOTICE,"Server %s already present from %s",
                  aconf->name, get_client_name(cptr, FALSE));
       if (by && IsPerson(by) && !MyClient(by))
         sendto_one(by, ":%s NOTICE %s :Server %s already present from %s",
@@ -568,7 +568,7 @@
    */
   if (!attach_cn_lines(cptr, aconf->host))
     {
-      sendto_realops("Host %s is not enabled for connecting:no C/N-line",
+      sendto_ops_flag(UMODE_SERVNOTICE,"Host %s is not enabled for connecting:no C/N-line",
                  aconf->host);
       if (by && IsPerson(by) && !MyClient(by))
         sendto_one(by, ":%s NOTICE %s :Connect to host %s failed.",
@@ -922,16 +922,16 @@
       int connected = CurrentTime - cptr->firsttime;
       
       if (0 == error)
-        sendto_ops("Server %s closed the connection",
-                   get_client_name(cptr, MASK_IP));
+        sendto_ops_flag(UMODE_SERVNOTICE, "Server %s closed the connection",
+			       get_client_name(cptr, MASK_IP));
       else
         report_error("Lost connection to %s:%s", 
                      get_client_name(cptr, MASK_IP), current_error);
-      sendto_realops("%s had been connected for %d day%s, %2d:%02d:%02d",
-                 cptr->name, connected/86400,
-                 (connected/86400 == 1) ? "" : "s",
-                 (connected % 86400) / 3600, (connected % 3600) / 60,
-                 connected % 60);
+      sendto_ops_flag(UMODE_SERVNOTICE,"%s had been connected for %d day%s, %2d:%02d:%02d",
+			     cptr->name, connected/86400,
+			     (connected/86400 == 1) ? "" : "s",
+			     (connected % 86400) / 3600, (connected % 3600) / 60,
+			     connected % 60);
     }
   if (0 == error)
     strcpy(errmsg, "Remote closed the connection");
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/s_conf.c ircd-hybrid-6.0/src/s_conf.c
--- ircd-hybrid-6.0.orig/src/s_conf.c	Wed Jun 20 03:42:17 2001
+++ ircd-hybrid-6.0/src/s_conf.c	Wed Jun 20 00:16:13 2001
@@ -458,15 +458,15 @@
               /* abuse it, lose it. */
 #ifdef SPOOF_FREEFORM
 #ifdef SPOOF_NOTICE
-              sendto_realops("%s spoofing: %s(%s) as %s", cptr->name,
-                             cptr->host, inetntoa((char*) &cptr->ip), aconf->name);
+              sendto_ops_flag(UMODE_CCONN, "%s spoofing: %s(%s) as %s", cptr->name,
+				     cptr->host, inetntoa((char*) &cptr->ip), aconf->name);
 #endif /* SPOOF_NOTICE */
               strncpy_irc(cptr->host, aconf->name, HOSTLEN);
 #else
               /* default to oper.server.name.tld */
 #ifdef SPOOF_NOTICE
-              sendto_realops("%s spoofing: %s(%s) as oper.%s", cptr->name,
-                             cptr->host, inetntoa((char*) &cptr->ip), me.name);
+              sendto_ops_flag_butonr(NULL, UMODE_CCONN, "%s spoofing: %s(%s) as oper.%s", cptr->name,
+				     cptr->host, inetntoa((char*) &cptr->ip), me.name);
 #endif /* SPOOF_NOTICE */
               strcpy(cptr->host, "oper.");
               strncpy_irc(&cptr->host[5], me.name, HOSTLEN - 5);
@@ -649,8 +649,8 @@
     {
       if( free_ip_entries == (IP_ENTRY *)NULL)
         {
-          sendto_realops("s_conf.c free_ip_entries was found NULL in find_or_add");
-          sendto_realops("Please report to the hybrid team! ircd-hybrid@the-project.org");
+          sendto_ops_flag(UMODE_DEBUG,"s_conf.c free_ip_entries was found NULL in find_or_add");
+          sendto_ops_flag(UMODE_DEBUG,"Please report to the dancer-hybrid team! opn-coders@vc.bc.ca");
           outofmemory();
         }
 
@@ -673,8 +673,8 @@
     {
       if( free_ip_entries == (IP_ENTRY *)NULL)
         {
-          sendto_realops("s_conf.c free_ip_entries was found NULL in find_or_add");
-          sendto_realops("Please report to the hybrid team! ircd-hybrid@the-project.org");
+          sendto_ops_flag(UMODE_DEBUG,"s_conf.c free_ip_entries was found NULL in find_or_add");
+          sendto_ops_flag(UMODE_DEBUG,"Please report to the dancer-hybrid team! opn-coders@vc.bc.ca");
           outofmemory();
         }
 
@@ -807,8 +807,8 @@
           ptr = ptr->next;
         }
     }
-  sendto_realops("s_conf.c couldn't find ip# in hash table in remove_one_ip()");
-  sendto_realops("Please report to the hybrid team! ircd-hybrid@the-project.org");
+  sendto_ops_flag(UMODE_DEBUG,"s_conf.c couldn't find ip# in hash table in remove_one_ip()");
+  sendto_ops_flag(UMODE_DEBUG,"Please report to the dancer-hybrid team! opn-coders@vc.bc.ca");
   return;
 }
 
@@ -1140,13 +1140,14 @@
   assert(0 != cptr);
   assert(0 != host);
 
+  log(L_NOTICE, "Connection from %s claiming to be %s", host, cptr->name);
   for (tmp = ConfigItemList; tmp; tmp = tmp->next) {
     if (!IsIllegal(tmp)) {
       /*
        * look for matching C:line
        */
       if (!found_cline && CONF_CONNECT_SERVER == tmp->status && 
-          tmp->host && 0 == irccmp(tmp->host, host)) {
+          tmp->host && (0 == irccmp(tmp->host, host)) && (irccmp(tmp->name, cptr->name) == 0)) {
         attach_conf(cptr, tmp);
         if (found_nline)
           return 1;
@@ -1156,7 +1157,7 @@
        * look for matching N:line
        */
       else if (!found_nline && CONF_NOCONNECT_SERVER == tmp->status &&
-               tmp->host && 0 == irccmp(tmp->host, host)) {
+               tmp->host && 0 == irccmp(tmp->host, host) && (irccmp(tmp->name, cptr->name) == 0)) {
         attach_conf(cptr, tmp);
         if (found_cline)
           return 1;
@@ -1727,7 +1728,7 @@
 int rehash(aClient *cptr,aClient *sptr, int sig)
 {
   if (sig)
-    sendto_realops("Got signal SIGHUP, reloading ircd conf. file");
+    sendto_ops_flag(UMODE_SERVNOTICE,"Got signal SIGHUP, reloading ircd conf. file");
 
   read_conf_files(NO);
   close_listeners();
@@ -2117,7 +2118,7 @@
 
               if(classToFind && (ClassPtr(aconf) == class0))
                 {
-                  sendto_realops(
+                  sendto_ops_flag(UMODE_SERVNOTICE,
                            "Warning *** Defaulting to class 0 for class %d",
                          classToFind);
                 }
@@ -2157,7 +2158,7 @@
 
 	      if(ps || pt)
 		{
-		  sendto_realops("H: or L: line trailing whitespace [%s]",
+		  sendto_ops_flag(UMODE_SERVNOTICE,"H: or L: line trailing whitespace [%s]",
 				 aconf->user);
 		  if(ps)*ps = '\0';
 		  if(pt)*pt = '\0';
@@ -2260,19 +2261,19 @@
           if (ncount > MAXCONFLINKS || ccount > MAXCONFLINKS ||
               !aconf->host || !aconf->user)
             {
-              sendto_realops("Bad C/N line");
+              sendto_ops_flag(UMODE_SERVNOTICE,"Bad C/N line");
               continue;
             }
 
           if (BadPtr(aconf->passwd))
             {
-              sendto_realops("Bad C/N line host %s", aconf->host);
+              sendto_ops_flag(UMODE_SERVNOTICE,"Bad C/N line host %s", aconf->host);
               continue;
             }
           
           if( SplitUserHost(aconf) < 0 )
             {
-              sendto_realops("Bad C/N line host %s", aconf->host);
+              sendto_ops_flag(UMODE_SERVNOTICE,"Bad C/N line host %s", aconf->host);
               free_conf(aconf);
               aconf = NULL;
               continue;
@@ -2287,7 +2288,7 @@
         {
           if(SplitUserHost(aconf) < 0)
             {
-              sendto_realops("Bad O/o line host %s", aconf->host);
+              sendto_ops_flag(UMODE_SERVNOTICE,"Bad O/o line host %s", aconf->host);
               free_conf(aconf);
               aconf = NULL;
 	      continue;
@@ -2578,10 +2579,10 @@
     {
       nextinclude = include_list->next;
       if ((file = openconf(include_list->name)) == 0)
-        sendto_realops("Can't open %s include file",include_list->name);
+        sendto_ops_flag(UMODE_SERVNOTICE,"Can't open %s include file",include_list->name);
       else
         {
-          sendto_realops_flag(UMODE_DEBUG, "Hashing in %s include file",include_list->name);
+          sendto_ops_flag(UMODE_DEBUG, "Hashing in %s include file",include_list->name);
           initconf(file, NO);
         }
       free_conf(include_list);
@@ -3311,7 +3312,7 @@
         }
       else
         {
-          sendto_realops("Can't open %s file aborting rehash!", filename );
+          sendto_ops_flag(UMODE_SERVNOTICE,"Can't open %s file aborting rehash!", filename );
           return;
         }
     }
@@ -3339,7 +3340,7 @@
             }
           else
             {
-              sendto_realops("Can't open %s file klines could be missing!",
+              sendto_ops_flag(UMODE_SERVNOTICE,"Can't open %s file klines could be missing!",
                          kfilename);
             }
         }
@@ -3358,7 +3359,7 @@
             }
           else
             {
-              sendto_realops("Can't open %s file dlines could be missing!",
+              sendto_ops_flag(UMODE_SERVNOTICE,"Can't open %s file dlines could be missing!",
                          dfilename);
             }
         }
@@ -3496,14 +3497,14 @@
     {
       if(type == DLINE_TYPE)
         {
-          sendto_realops("%s added D-Line for [%s] [%s]",
+          sendto_ops_flag(UMODE_SERVNOTICE,"%s added D-Line for [%s] [%s]",
                          sptr->name, host, reason);
           sendto_one(sptr, ":%s NOTICE %s :Added D-Line [%s] to %s",
                      me.name, sptr->name, host, filename);
         }
       else
         {
-          sendto_realops("%s added K-Line for [%s@%s] [%s]",
+          sendto_ops_flag(UMODE_SERVNOTICE,"%s added K-Line for [%s@%s] [%s]",
                          sptr->name, user, host, reason);
           sendto_one(sptr, ":%s NOTICE %s :Added K-Line [%s@%s] to %s",
                      me.name, sptr->name, user, host, filename);
@@ -3512,7 +3513,7 @@
 
   if ((out = open(filename, O_RDWR|O_APPEND|O_CREAT,0644))==-1)
     {
-      sendto_realops("Problem opening %s ", filename);
+      sendto_ops_flag(UMODE_SERVNOTICE,"Problem opening %s ", filename);
       return;
     }
 
@@ -3588,7 +3589,7 @@
 {
   if (write(out, buffer, strlen(buffer)) <= 0)
     {
-      sendto_realops("*** Problem writing to %s",filename);
+      sendto_ops_flag(UMODE_SERVNOTICE,"*** Problem writing to %s",filename);
       close(out);
       return -1;
     }
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/s_cr.c ircd-hybrid-6.0/src/s_cr.c
--- ircd-hybrid-6.0.orig/src/s_cr.c	Wed Jun 20 03:42:17 2001
+++ ircd-hybrid-6.0/src/s_cr.c	Wed Jun 20 02:39:08 2001
@@ -34,7 +34,7 @@
   strncpy_irc(cptr->name, n_conf->name, HOSTLEN);
   strcpy(cptr->passwd, chall);
   SetChallenged(cptr);
-  sendto_ops("Sent password challenge to %s", cptr->name);
+  sendto_ops_flag(UMODE_DEBUG, "Sent password challenge to %s", cptr->name);
 }
 
 void cr_hashstring(char * src, char * trg) {
@@ -57,7 +57,7 @@
   cr_hashstring(work, hash);
   sendto_one(cptr, "RESP %s", hash);
   SetResponded(cptr);
-  sendto_ops("Sent password response to %s", cptr->name);
+  sendto_ops_flag(UMODE_DEBUG, "Sent password response to %s", cptr->name);
 }
 
 void cr_gotresponse(struct Client * cptr, char * resp) {
@@ -70,9 +70,9 @@
     cr_hashstring(work, hash);
     if (!strcmp(resp, hash)) {
       strncpy_irc(cptr->passwd, n_conf->passwd, PASSWDLEN);
-      sendto_ops("Got a good password response from %s", cptr->name);
+      sendto_ops_flag(UMODE_SEEROUTING, "Got a good password response from %s", cptr->name);
     } else {
-      sendto_ops("Failed password response from %s", cptr->name);
+      sendto_ops_flag(UMODE_SEEROUTING, "Failed password response from %s", cptr->name);
     }
   }
 }
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/s_serv.c ircd-hybrid-6.0/src/s_serv.c
--- ircd-hybrid-6.0.orig/src/s_serv.c	Wed Jun 20 03:42:17 2001
+++ ircd-hybrid-6.0/src/s_serv.c	Wed Jun 20 02:57:31 2001
@@ -288,9 +288,9 @@
        * auto connects disabled, send message to ops and bail
        */
       if (connecting)
-        sendto_ops("Connection to %s[%s] not activated.",
+        sendto_ops_flag(UMODE_SEEROUTING, "Connection to %s[%s] not activated.",
                  con_conf->name, con_conf->host);
-      sendto_ops("WARNING AUTOCONN is 0, autoconns are disabled");
+      sendto_ops_flag(UMODE_SERVNOTICE, "WARNING AUTOCONN is 0, autoconns are disabled");
       Debug((DEBUG_NOTICE,"Next connection check : %s", myctime(next)));
       return next;
     }
@@ -312,16 +312,20 @@
         }
       if (!(con_conf->flags & CONF_FLAGS_ALLOW_AUTO_CONN))
         {
-          sendto_realops("Connection to %s[%s] not activated, autoconn is off.",
+          sendto_ops_flag(UMODE_SEEROUTING,"Connection to %s[%s] not activated, autoconn is off.",
                      con_conf->name, con_conf->host);
-          sendto_realops("WARNING AUTOCONN on %s[%s] is disabled",
+          sendto_ops_flag(UMODE_SEEROUTING,"WARNING AUTOCONN on %s[%s] is disabled",
                      con_conf->name, con_conf->host);
         }
       else
         {
           if (connect_server(con_conf, 0, 0))
-            sendto_realops("Connection to %s[%s] activated.",
-                       con_conf->name, con_conf->host);
+	    {
+	      sendto_ops_flag(UMODE_SEEROUTING,"Connection to %s[%s] activated.",
+			      con_conf->name, con_conf->host);
+	      sendto_ops_flag(UMODE_SERVNOTICE,"Attempting connection to %s",
+			      con_conf->name);
+	    }
         }
     }
   Debug((DEBUG_NOTICE,"Next connection check : %s", myctime(next)));
@@ -549,7 +553,7 @@
       ServerStats->is_ref++;
       sendto_one(cptr,
                  "ERROR :Access denied. No N line for server %s", inpath);
-      sendto_ops("Access denied. No N line for server %s", inpath);
+      sendto_ops_flag(UMODE_SERVNOTICE, "Access denied. No N line for server %s", inpath);
       log(L_NOTICE, "Access denied. No N line for server %s", inpath_ip);
       return exit_client(cptr, cptr, cptr, "No N line for server");
     }
@@ -557,7 +561,7 @@
     {
       ServerStats->is_ref++;
       sendto_one(cptr, "ERROR :Only N (no C) field for server %s", inpath);
-      sendto_realops("Only N (no C) field for server %s",inpath);
+      sendto_ops_flag(UMODE_SERVNOTICE,"Only N (no C) field for server %s",inpath);
       log(L_NOTICE, "Only N (no C) field for server %s",inpath_ip);
       return exit_client(cptr, cptr, cptr, "No C line for server");
     }
@@ -565,7 +569,7 @@
 #ifdef CHALLENGERESPONSE
   if (!Responded(cptr)) {
 # ifndef CHALLENGERESPONSE_FALLBACK
-    sendto_realops("Access denied (plaintext password) %s", inpath);
+    sendto_ops_flag(UMODE_SERVNOTICE,"Access denied (plaintext password) %s", inpath);
     return exit_client(cptr, cptr, cptr, "Non CR server");
 # else
 #  ifdef CRYPT_LINK_PASSWORD
@@ -607,7 +611,7 @@
       ServerStats->is_ref++;
       sendto_one(cptr, "ERROR :No Access (md5 passwd mismatch) %s",
                  inpath);
-      sendto_realops("Access denied (md5 passwd mismatch) %s", inpath);
+      sendto_ops_flag(UMODE_SERVNOTICE,"Access denied (md5 passwd mismatch) %s", inpath);
       log(L_NOTICE, "Access denied (md5 passwd mismatch) %s", inpath_ip);
       return exit_client(cptr, cptr, cptr, "Bad Password");
     }
@@ -617,7 +621,7 @@
   SetGotId(cptr);
 
   if (!IsCapable(cptr, CAP_OPN)) {
-      sendto_ops("Access denied (not an OPN hax0red server) %s", inpath);
+      sendto_ops_flag(UMODE_SERVNOTICE, "Access denied (not an OPN hax0red server) %s", inpath);
       return exit_client(cptr, cptr, cptr, "Insufficient Capabilities");
     }
 #ifndef HUB
@@ -666,7 +670,7 @@
       if (!match(n_conf->user, cptr->username))
         {
           ServerStats->is_ref++;
-          sendto_realops("Username mismatch [%s]v[%s] : %s",
+          sendto_ops_flag(UMODE_SERVNOTICE,"Username mismatch [%s]v[%s] : %s",
                      n_conf->user, cptr->username,
                      get_client_name(cptr, FALSE));
           sendto_one(cptr, "ERROR :No Username Match");
@@ -681,7 +685,7 @@
       if (zip_init(cptr) == -1)
         {
           zip_free(cptr);
-          sendto_realops("Unable to setup compressed link for %s",
+          sendto_ops_flag(UMODE_SERVNOTICE,"Unable to setup compressed link for %s",
                       get_client_name(cptr, FALSE));
           return exit_client(cptr, cptr, &me, "zip_init() failed");
         }
@@ -729,8 +733,9 @@
 
   nextping = CurrentTime;
   /* ircd-hybrid-6 can do TS links, and  zipped links*/
-  sendto_ops("Link with %s established: %s",
-             inpath,show_capabilities(cptr));
+  sendto_ops_flag_butone(cptr, UMODE_SEEROUTING, "Link with %s established: %s",
+		  inpath,show_capabilities(cptr));
+  sendto_ops_flag_butone_hidefrom(cptr, UMODE_SERVNOTICE, "%s is linking to the network", cptr->name);
   log(L_NOTICE, "Link with %s established: (%s) link",
              inpath_ip,show_capabilities(cptr));
 
@@ -882,7 +887,7 @@
   ** they are slightly incorrect because of cptr->zip->outbuf.
   */
   if ((cptr->flags2 & FLAGS2_ZIP) && cptr->zip->out->total_in)
-    sendto_realops("Connect burst to %s: %lu, compressed: %lu (%3.1f%%)",
+    sendto_ops_flag(UMODE_SERVNOTICE,"Connect burst to %s: %lu, compressed: %lu (%3.1f%%)",
                 get_client_name(cptr, FALSE),
                 cptr->zip->out->total_in,cptr->zip->out->total_out,
                 (100.0*(float)cptr->zip->out->total_out) /
@@ -921,7 +926,7 @@
       else
         aconf->flags &= ~CONF_FLAGS_ALLOW_AUTO_CONN;
 
-      sendto_realops(
+      sendto_ops_flag(UMODE_SERVNOTICE,
                  "%s has changed AUTOCONN for %s to %i",
                  parv0, name, newval);
       sendto_one(sptr,
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	Wed Jun 20 03:42:17 2001
+++ ircd-hybrid-6.0/src/s_user.c	Tue Jun 19 16:50:08 2001
@@ -228,41 +228,41 @@
         {
           if (m_server != Count.myserver)
             {
-              sendto_realops_flag(UMODE_DEBUG,
+              sendto_ops_flag(UMODE_DEBUG,
                                   "Local server count off by %d ",
 				  Count.myserver - m_server);
               Count.myserver = m_server;
             }
           if (s_count != Count.server)
             {
-              sendto_realops_flag(UMODE_DEBUG,
+              sendto_ops_flag(UMODE_DEBUG,
 				  "Server count off by %d",
 				  Count.server - s_count);
               Count.server = s_count;
             }
           if (i_count != Count.invisi)
             {
-              sendto_realops_flag(UMODE_DEBUG,
+              sendto_ops_flag(UMODE_DEBUG,
 				  "Invisible client count off by %d",
 				  Count.invisi - i_count);
               Count.invisi = i_count;
             }
           if ((c_count+i_count) != Count.total)
             {
-              sendto_realops_flag(UMODE_DEBUG, "Total client count off by %d",
+              sendto_ops_flag(UMODE_DEBUG, "Total client count off by %d",
 				  Count.total - (c_count+i_count));
               Count.total = c_count+i_count;
             }
           if (m_client != Count.local)
             {
-              sendto_realops_flag(UMODE_DEBUG,
+              sendto_ops_flag(UMODE_DEBUG,
 				  "Local client count off by %d",
 				  Count.local - m_client);
               Count.local = m_client;
             }
           if (o_count != Count.oper)
             {
-              sendto_realops_flag(UMODE_DEBUG,
+              sendto_ops_flag(UMODE_DEBUG,
 				  "Oper count off by %d", Count.oper - o_count);
               Count.oper = o_count;
             }
@@ -487,7 +487,7 @@
 
         case I_LINE_FULL:
         case I_LINE_FULL2:
-          sendto_realops_flag(UMODE_FULL, "%s for %s (%s).",
+          sendto_ops_flag(UMODE_FULL, "%s for %s (%s).",
 			      "I-line is full",
 			      get_client_host(sptr),
 			      inetntoa((char*) &sptr->ip));
@@ -515,7 +515,7 @@
               ServerStats->is_ref++;
 	/* jdc - lists server name & port connections are on */
 	/*       a purely cosmetical change */
-              sendto_realops_flag(UMODE_CCONN,
+              sendto_ops_flag(UMODE_CCONN,
 				  "%s from %s [%s] on [%s/%u].",
 				  "Unauthorized client connection",
 				  get_client_host(sptr),
@@ -632,7 +632,7 @@
           ((Count.local + 1) >= (MAXCLIENTS+MAX_BUFFER))) ||
             (((Count.local +1) >= (MAXCLIENTS - 5)) && !(IsFlined(sptr))))
         {
-          sendto_realops_flag(UMODE_FULL,
+          sendto_ops_flag(UMODE_FULL,
                                "Too many clients, rejecting %s[%s].",
                                nick, sptr->host);
           ServerStats->is_ref++;
@@ -645,14 +645,14 @@
         {
           if(IsBlined(sptr))
             {
-              sendto_ops_flag_butone(NULL, UMODE_BOTS,
+              sendto_ops_flag(UMODE_BOTS,
 				     "Possible %s: %s (%s@%s) [B-lined]",
 				     type_of_bot[sptr->isbot],
 				     sptr->name, sptr->username, sptr->host);
             }
           else
             {
-              sendto_realops_flag(UMODE_BOTS, "Rejecting %s: %s",
+              sendto_ops_flag(UMODE_BOTS, "Rejecting %s: %s",
 				  type_of_bot[sptr->isbot],
 				  get_client_name(sptr,FALSE));
               ServerStats->is_ref++;
@@ -666,7 +666,7 @@
 
       if (!valid_username(sptr->username))
         {
-          sendto_realops_flag(UMODE_REJ,"Invalid username: %s (%s@%s)",
+          sendto_ops_flag(UMODE_REJ,"Invalid username: %s (%s@%s)",
 			      nick, sptr->username, sptr->host);
           ServerStats->is_ref++;
           ircsprintf(tmpstr2, "Invalid username [%s]", sptr->username);
@@ -689,7 +689,7 @@
                 {
                   if (aconf->port == 1)
                     {
-                      sendto_realops_flag(UMODE_REJ,
+                      sendto_ops_flag(UMODE_REJ,
 					  "X-line Rejecting [%s] [%s], user %s",
 					  sptr->info,
 					  reason,
@@ -699,7 +699,7 @@
                   return exit_client(cptr, sptr, &me, "Bad user info");
                 }
               else
-                sendto_ops_flag_butone(NULL, UMODE_REJ,
+                sendto_ops_flag(UMODE_REJ,
 				       "X-line Warning [%s] [%s], user %s",
 				       sptr->info,
 				       reason,
@@ -707,7 +707,7 @@
             }
          }
 
-      sendto_ops_flag_butone(NULL, UMODE_CCONN,
+      sendto_ops_flag(UMODE_CCONN,
 			     "Client connecting: %s (%s@%s) [%s] {%d} [%s]",
 			     nick, sptr->username, sptr->host,
 			     inetntoa((char *)&sptr->ip),
@@ -717,8 +717,8 @@
         {
           Count.max_loc = Count.local;
           if (!(Count.max_loc % 10))
-            sendto_ops("New local record: %d users",
-                       Count.max_loc);
+            sendto_ops_flag(UMODE_SERVNOTICE, "New local record: %d users",
+				   Count.max_loc);
         }
     }
   else
@@ -729,7 +729,7 @@
   sptr->servptr = find_server(user->server);
   if (!sptr->servptr)
     {
-      sendto_realops("Ghost killed: %s on invalid server %s",
+      sendto_ops_flag(UMODE_SERVNOTICE,"Ghost killed: %s on invalid server %s",
                  sptr->name, sptr->user->server);
       sendto_one(cptr,":%s KILL %s :%s (Ghosted, %s doesn't exist)",
                  me.name, sptr->name, me.name, user->server);
@@ -739,7 +739,7 @@
   add_client_to_llist(&(sptr->servptr->serv->users), sptr);
 
   if (MyConnect(sptr) && (sptr->username[0] == '~' || isdigit(sptr->host[0])))
-    sendto_ops_flag_butone(NULL, UMODE_CCONN,
+    sendto_ops_flag(UMODE_CCONN,
 			   "Auth warning on %s (%s@%s) %s%s",
 			   sptr->name, sptr->username, sptr->host,
 			   (sptr->username[0] == '~') ? "[ident fail] " : "",
@@ -826,7 +826,7 @@
       aClient *acptr;
       if ((acptr = find_server(user->server)) && acptr->from != sptr->from)
         {
-          sendto_realops_flag(UMODE_DEBUG, 
+          sendto_ops_flag(UMODE_DEBUG, 
 			      "Bad User [%s] :%s USER %s@%s %s, != %s[%s]",
 			      cptr->name, nick, sptr->username,
 			      sptr->host, user->server,
@@ -851,7 +851,7 @@
                      ":%s KILL %s :%s GHOST (no server %s on the net)",
                      me.name,
                      sptr->name, me.name, user->server);
-          sendto_realops("No server %s for user %s[%s@%s] from %s",
+          sendto_ops_flag(UMODE_SERVNOTICE,"No server %s for user %s[%s@%s] from %s",
                           user->server, sptr->name, sptr->username,
                           sptr->host, sptr->from->name);
           sptr->flags |= FLAGS_KILLED;
@@ -1191,7 +1191,7 @@
           if(sptr->number_of_nick_changes <= MAX_NICK_CHANGES)
             {
 #endif
-              sendto_realops_flag(UMODE_NCHANGE,
+              sendto_ops_flag(UMODE_NCHANGE,
 				  "Nick change: From %s to %s [%s@%s]",
 				  parv[0], nick, sptr->username,
 				  sptr->host);
@@ -1216,7 +1216,7 @@
                          me.name,
                          sptr->name,
                          MAX_NICK_TIME);
-              sendto_ops_flag_butone(NULL, UMODE_BOTS, "Flooder %s [%s@%s] on %s (nick)",
+              sendto_ops_flag(UMODE_BOTS, "Flooder %s [%s@%s] on %s (nick)",
 				     sptr->name, sptr->username, sptr->host, me.name);
 
               return 0;
@@ -1233,7 +1233,7 @@
               add_history(sptr,1);
               sendto_serv_butone(cptr, ":%s NICK %s :%lu",
                                  parv[0], nick, sptr->tsinfo);
-              sendto_realops_flag(UMODE_NCHANGE,
+              sendto_ops_flag(UMODE_NCHANGE,
 				  "Nick change: From %s to %s [%s@%s]",
 				  parv[0], nick, sptr->username,
 				  sptr->host);
@@ -1379,7 +1379,7 @@
       if (IsServer(cptr))
         {
           ServerStats->is_kill++;
-          sendto_realops_flag(UMODE_DEBUG, "Bad Nick: %s From: %s %s",
+          sendto_ops_flag(UMODE_DEBUG, "Bad Nick: %s From: %s %s",
 			      parv[1], parv[0],
 			      get_client_name(cptr, FALSE));
           sendto_one(cptr, ":%s KILL %s :%s (%s <- %s[%s])",
@@ -1400,7 +1400,7 @@
             }
         }
       else
-        sendto_ops_flag_butone(NULL, UMODE_BOTS, "Illegal nick \"%s\" from: %s %s",
+        sendto_ops_flag(UMODE_BOTS, "Illegal nick \"%s\" from: %s %s",
 			       parv[1], parv[0],
 			       get_client_name(cptr, FALSE));
       return 0;
@@ -1409,7 +1409,7 @@
   if(MyConnect(sptr) && !IsServer(sptr) && !CannotBeQlined(sptr) &&
      find_q_line(nick, sptr->username, sptr->host)) 
     {
-      sendto_realops_flag(UMODE_REJ,
+      sendto_ops_flag(UMODE_REJ,
 			  "Quarantined nick [%s] from user %s",
 			  nick,get_client_name(cptr, FALSE));
       sendto_one(sptr, form_str(ERR_ERRONEUSNICKNAME),
@@ -1449,7 +1449,7 @@
       ** there is no danger of the server being disconnected.
       ** Ultimate way to jupiter a nick ? >;-). -avalon
       */
-      sendto_realops("Nick collision on %s(%s <- %s)",
+      sendto_ops_flag(UMODE_SERVNOTICE,"Nick collision on %s(%s <- %s)",
                  sptr->name, acptr->from->name,
                  get_client_name(cptr, FALSE));
       ServerStats->is_kill++;
@@ -1519,7 +1519,7 @@
       {
         if (fromTS && !(acptr->user))
           {
-            sendto_realops("Nick Collision on %s(%s(NOUSER) <- %s!%s@%s)(TS:%s)",
+            sendto_ops_flag(UMODE_SERVNOTICE,"Nick Collision on %s(%s(NOUSER) <- %s!%s@%s)(TS:%s)",
                    acptr->name, acptr->from->name, parv[1], parv[5], parv[6],
                    cptr->name);
 
@@ -1597,7 +1597,7 @@
       if (!newts || !acptr->tsinfo
           || (newts == acptr->tsinfo))
         {
-          sendto_realops("Nick collision on %s(%s <- %s)(both killed)",
+          sendto_ops_flag(UMODE_SERVNOTICE,"Nick collision on %s(%s <- %s)(both killed)",
                      acptr->name, acptr->from->name,
                      get_client_name(cptr, FALSE));
           ServerStats->is_kill++;
@@ -1629,11 +1629,11 @@
           else
             {
               if (sameuser)
-                sendto_realops("Nick collision on %s(%s <- %s)(older killed)",
+                sendto_ops_flag(UMODE_SERVNOTICE,"Nick collision on %s(%s <- %s)(older killed)",
                            acptr->name, acptr->from->name,
                            get_client_name(cptr, FALSE));
               else
-                sendto_realops("Nick collision on %s(%s <- %s)(newer killed)",
+                sendto_ops_flag(UMODE_SERVNOTICE,"Nick collision on %s(%s <- %s)(newer killed)",
                            acptr->name, acptr->from->name,
                            get_client_name(cptr, FALSE));
               
@@ -1665,7 +1665,7 @@
   if ( !newts || !acptr->tsinfo || (newts == acptr->tsinfo) ||
       !sptr->user)
     {
-      sendto_realops("Nick change collision from %s to %s(%s <- %s)(both killed)",
+      sendto_ops_flag(UMODE_SERVNOTICE,"Nick change collision from %s to %s(%s <- %s)(both killed)",
                  sptr->name, acptr->name, acptr->from->name,
                  get_client_name(cptr, FALSE));
       ServerStats->is_kill++;
@@ -1701,11 +1701,11 @@
           (!sameuser && newts > acptr->tsinfo))
         {
           if (sameuser)
-            sendto_realops("Nick change collision from %s to %s(%s <- %s)(older killed)",
+            sendto_ops_flag(UMODE_SERVNOTICE,"Nick change collision from %s to %s(%s <- %s)(older killed)",
                        sptr->name, acptr->name, acptr->from->name,
                        get_client_name(cptr, FALSE));
           else
-            sendto_realops("Nick change collision from %s to %s(%s <- %s)(newer killed)",
+            sendto_ops_flag(UMODE_SERVNOTICE,"Nick change collision from %s to %s(%s <- %s)(newer killed)",
                        sptr->name, acptr->name, acptr->from->name,
                        get_client_name(cptr, FALSE));
           ServerStats->is_kill++;
@@ -1726,11 +1726,11 @@
       else
         {
           if (sameuser)
-            sendto_realops("Nick collision on %s(%s <- %s)(older killed)",
+            sendto_ops_flag(UMODE_SERVNOTICE,"Nick collision on %s(%s <- %s)(older killed)",
                        acptr->name, acptr->from->name,
                        get_client_name(cptr, FALSE));
           else
-            sendto_realops("Nick collision on %s(%s <- %s)(newer killed)",
+            sendto_ops_flag(UMODE_SERVNOTICE,"Nick collision on %s(%s <- %s)(newer killed)",
                        acptr->name, acptr->from->name,
                        get_client_name(cptr, FALSE));
           
@@ -1799,7 +1799,7 @@
       sendto_one(sptr, form_str(ERR_NEEDMOREPARAMS),
                  me.name, BadPtr(parv[0]) ? "*" : parv[0], "USER");
       if (IsServer(cptr))
-        sendto_realops("bad USER param count for %s from %s",
+        sendto_ops_flag(UMODE_SERVNOTICE,"bad USER param count for %s from %s",
                        parv[0], get_client_name(cptr, FALSE));
       else
         return 0;
@@ -2080,7 +2080,7 @@
       else if (IsServer(sptr))
 	ircophack = 1; /* Remote servers are trusted to set sane umodes. Illicit servers must not be allowed to attach */
       else if (IsServer(cptr))
-        sendto_ops_flag_butone(NULL, UMODE_SERVNOTICE,
+        sendto_ops_flag(UMODE_SERVNOTICE,
 			       "%s issuing MODE for User %s From %s!%s",
 			       me.name, parv[1],
 			       get_client_name(cptr, FALSE), sptr->name);
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/s_zip.c ircd-hybrid-6.0/src/s_zip.c
--- ircd-hybrid-6.0.orig/src/s_zip.c	Fri Nov 24 18:24:37 2000
+++ ircd-hybrid-6.0/src/s_zip.c	Tue Jun 19 16:50:16 2001
@@ -191,7 +191,7 @@
                * there is more uncompressed data to do, and dopacket()
                * will not return until its all parsed. -db
                */
-              sendto_realops("Overflowed unzipbuf increase UNZIP_BUFFER_SIZE");
+              sendto_ops_flag(UMODE_SERVNOTICE,"Overflowed unzipbuf increase UNZIP_BUFFER_SIZE");
               /*
                * I used to just give up here....
                * length = -1;
@@ -260,7 +260,7 @@
     case Z_BUF_ERROR:
       if (zin->avail_out == 0)
         {
-          sendto_realops("inflate() returned Z_BUF_ERROR: %s",
+          sendto_ops_flag(UMODE_SERVNOTICE,"inflate() returned Z_BUF_ERROR: %s",
                       (zin->msg) ? zin->msg : "?");
           *length = -1;
         }
@@ -283,7 +283,7 @@
 
     default: /* error ! */
       /* should probably mark link as dead or something... */
-      sendto_realops("inflate() error(%d): %s", r,
+      sendto_ops_flag(UMODE_SERVNOTICE,"inflate() error(%d): %s", r,
                   (zin->msg) ? zin->msg : "?");
       *length = -1; /* report error condition */
       break;
@@ -333,14 +333,14 @@
       if (zout->avail_in)
         {
           /* can this occur?? I hope not... */
-          sendto_realops("deflate() didn't process all available data!");
+          sendto_ops_flag(UMODE_SERVNOTICE,"deflate() didn't process all available data!");
         }
       cptr->zip->outcount = 0;
       *length = ZIP_BUFFER_SIZE - zout->avail_out;
       return zipbuf;
 
     default: /* error ! */
-      sendto_realops("deflate() error(%d): %s", r, (zout->msg) ? zout->msg : "?");
+      sendto_ops_flag(UMODE_SERVNOTICE,"deflate() error(%d): %s", r, (zout->msg) ? zout->msg : "?");
       *length = -1;
       break;
     }
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/send.c ircd-hybrid-6.0/src/send.c
--- ircd-hybrid-6.0.orig/src/send.c	Wed Jun 20 03:42:17 2001
+++ ircd-hybrid-6.0/src/send.c	Wed Jun 20 02:32:06 2001
@@ -52,7 +52,7 @@
 
 static  void vsendto_prefix_one(register aClient *, register aClient *, const char *, va_list);
 static  void vsendto_one(aClient *, const char *, va_list);
-static  void vsendto_realops(const char *, va_list);
+static  void vsendto_ops_flag_butone(aClient*, int, const char *, va_list);
 
 static  unsigned long sentalong[MAXCONNECTIONS];
 static unsigned long current_serial=0L;
@@ -86,7 +86,7 @@
   DBufClear(&to->recvQ);
   DBufClear(&to->sendQ);
   if (!IsPerson(to) && !IsUnknown(to) && !(to->flags & FLAGS_CLOSING))
-    sendto_realops(notice, get_client_name(to, MASK_IP));
+    sendto_ops_flag(UMODE_SERVNOTICE, notice, get_client_name(to, MASK_IP));
   
   Debug((DEBUG_ERROR, notice, get_client_name(to, MASK_IP)));
 
@@ -142,7 +142,8 @@
 
         if (IsMe(to))
         {
-                sendto_realops("Trying to send to myself! [%s]", msg);
+                sendto_ops_flag(UMODE_DEBUG, "Trying to send to myself! [%s]", msg);
+		log(L_ERROR, "Trying to send to myself! [%s]", msg);
                 return 0;
         }
 
@@ -155,7 +156,7 @@
         if (DBufLength(&to->sendQ) > get_sendq(to))
         {
                 if (IsServer(to))
-                        sendto_realops("Max SendQ limit exceeded for %s: %d > %d",
+                        sendto_ops_flag(UMODE_SERVNOTICE, "Max SendQ limit exceeded for %s: %d > %d",
                                 get_client_name(to, FALSE),
                                 DBufLength(&to->sendQ), get_sendq(to));
 
@@ -241,7 +242,8 @@
 
         if (IsMe(to))
         {
-                sendto_realops("Trying to send to myself! [%s]", msg);
+                sendto_ops_flag(UMODE_DEBUG, "Trying to send to myself! [%s]", msg);
+		log(L_ERROR, "Trying to send to myself! [%s]", msg);
                 return 0;
         }
 
@@ -265,12 +267,12 @@
                 */
                 if (DBufLength(&to->sendQ) > get_sendq(to))
                 {
-                        sendto_ops_butone(to,
-                                "Max SendQ limit exceeded for %s : %d > %d",
-                                get_client_name(to, FALSE),
-                                DBufLength(&to->sendQ), get_sendq(to));
-
-                                return dead_link(to, "Max Sendq exceeded");
+		  sendto_ops_flag_butone(to, UMODE_SERVNOTICE, 
+					 "Max SendQ limit exceeded for %s : %d > %d",
+					 get_client_name(to, FALSE),
+					 DBufLength(&to->sendQ), get_sendq(to));
+		  
+		  return dead_link(to, "Max Sendq exceeded");
                 }
                 else
                 {
@@ -450,7 +452,8 @@
     }
   else if (IsMe(to))
     {
-      sendto_realops("Trying to send [%s] to myself!", sendbuf);
+      sendto_ops_flag(UMODE_DEBUG, "Trying to send to myself! [%s]", sendbuf);
+      log(L_ERROR, "Trying to send to myself! [%s]", sendbuf);
       return;
     }
 
@@ -765,7 +768,7 @@
 /*
  * sendto_channel_chanops_butserv
  *
- * Send a message to all members of a channel that are connected to this
+ * Send a message to all ops of a channel that are connected to this
  * server.
  */
 
@@ -790,10 +793,11 @@
   
   va_end(args);
 } /* sendto_channel_butserv() */
+
 /*
- * sendto_channel_chanops_butserv
+ * sendto_channel_non_chanops_butserv
  *
- * Send a message to all members of a channel that are connected to this
+ * Send a message to all non-ops of a channel that are connected to this
  * server.
  */
 
@@ -959,132 +963,6 @@
 } /* sendto_match_butone() */
 
 /*
- * sendto_ops_flags
- *
- *    Send to *local* ops only at a certain level...
- */
-
-void
-sendto_ops_flag(int flag, const char *pattern, ...)
-
-{
-  va_list args;
-  register aClient *cptr;
-  char nbuf[1024];
-
-  va_start(args, pattern);
-
-  if((flag == UMODE_SKILL) || (flag == UMODE_SERVNOTICE))
-    {
-      for(cptr = local_cptr_list; cptr; cptr = cptr->next_local_client)
-        {
-          if(TestBit(cptr->umodes,flag))
-            {
-              (void)ircsprintf(nbuf, ":%s NOTICE %s :*** Notice -- ",
-                               me.name, cptr->name);
-      
-              (void)strncat(nbuf, pattern, sizeof(nbuf) - strlen(nbuf));
-      
-              vsendto_one(cptr, nbuf, args);
-            }
-        } /* for(cptr = local_cptr_list; cptr; cptr = cptr->next_local_client) */
-    }
-  else
-    {
-      for(cptr = oper_cptr_list; cptr; cptr = cptr->next_oper_client)
-        {
-          if(TestBit(cptr->umodes,flag))
-            {
-              (void)ircsprintf(nbuf, ":%s NOTICE %s :*** Notice -- ",
-                               me.name, cptr->name);
-              
-              (void)strncat(nbuf, pattern, sizeof(nbuf) - strlen(nbuf));
-              
-              vsendto_one(cptr, nbuf, args);
-            }
-        } /* for(cptr = oper_cptr_list; cptr; cptr = cptr->next_oper_client) */
-    }
-  va_end(args);
-}  /* sendto_ops_flags */
-
-/*
- * sendto_ops
- *
- *      Send to *local* ops only.
- */
-
-void
-sendto_ops(const char *pattern, ...)
-
-{
-  va_list args;
-  register aClient *cptr;
-  char nbuf[1024];
-
-  va_start(args, pattern);
-  
-  for (cptr = oper_cptr_list; cptr; cptr = cptr->next_oper_client)
-    {
-      if (SendServNotice(cptr))
-        {
-          (void)ircsprintf(nbuf, ":%s NOTICE %s :*** Notice -- ",
-                           me.name, cptr->name);
-          (void)strncat(nbuf, pattern, sizeof(nbuf) - strlen(nbuf));
-          
-          vsendto_one(cptr, nbuf, args);
-        }
-    }
-
-  va_end(args);
-} /* sendto_ops() */
-
-
-/*
-** sendto_ops_butone
-**      Send message to all operators.
-** one - client not to send message to
-** from- client which message is from *NEVER* NULL!!
-*/
-
-void
-sendto_ops_butone(aClient *one, aClient *from, const char *pattern, ...)
-
-{
-  va_list args;
-  register int index;
-  register aClient *cptr;
-
-  va_start(args, pattern);
-
-  ++current_serial;
-
-  for (cptr = GlobalClientList; cptr; cptr = cptr->next)
-    {
-      if (!SendWallops(cptr))
-        continue;
-
-/* we want wallops
-   if (MyClient(cptr) && !(IsServer(from) || IsMe(from)))
-   continue;
-*/
-
-      index = cptr->from->fd; /* find connection oper is on */
-
-      if (sentalong[index] == current_serial)
-        continue;
-      
-      if (cptr->from == one)
-        continue;       /* ...was the one I should skip */
-      
-      sentalong[index] = current_serial;
-      
-      vsendto_prefix_one(cptr->from, from, pattern, args);
-    }
-
-  va_end(args);
-} /* sendto_ops_butone() */
-
-/*
 ** sendto_wallops_butone
 **      Send message to all operators.
 ** one - client not to send message to
@@ -1224,13 +1102,13 @@
         {
           vsprintf_irc(sendbuf, pattern, args);
           
-          sendto_realops(
+          sendto_ops_flag(UMODE_SERVNOTICE,
                      "Send message (%s) to %s[%s] dropped from %s(Fake Dir)",
                      sendbuf, to->name, to->from->name, from->name);
           return;
         }
 
-      sendto_realops("Ghosted: %s[%s@%s] from %s[%s@%s] (%s)",
+      sendto_ops_flag(UMODE_SERVNOTICE, "Ghosted: %s[%s@%s] from %s[%s@%s] (%s)",
                  to->name, to->username, to->host,
                  from->name, from->username, from->host,
                  to->from->name);
@@ -1300,120 +1178,6 @@
 } /* vsendto_prefix_one() */
 
 /*
- * sendto_realops
- *
- *    Send to *local* ops only but NOT +s nonopers.
- */
-
-void
-sendto_realops(const char *pattern, ...)
-
-{
-  va_list args;
-
-  va_start(args, pattern);
-
-  vsendto_realops(pattern, args);
-
-  va_end(args);
-} /* sendto_realops() */
-
-/*
-vsendto_realops()
- Send the given string to local operators (not +s)
-*/
-
-static void
-vsendto_realops(const char *pattern, va_list args)
-
-{
-  register aClient *cptr;
-  char nbuf[1024];
-  
-  for (cptr = oper_cptr_list; cptr; cptr = cptr->next_oper_client)
-    {
-      if (SendServNotice(cptr))
-        {
-          (void)ircsprintf(nbuf, ":%s NOTICE %s :*** Notice -- ",
-                           me.name, cptr->name);
-          (void)strncat(nbuf, pattern, sizeof(nbuf) - strlen(nbuf));
-          
-          vsendto_one(cptr, nbuf, args);
-        }
-    }
-} /* vsendto_realops() */
-
-/*
- * sendto_realops_flags
- *
- *    Send to *local* ops with matching flags
- */
-
-void
-sendto_realops_flag(int flag, const char *pattern, ...)
-
-{
-  va_list args;
-  register aClient *cptr;
-  char nbuf[1024];
-
-  va_start(args, pattern);
-
-  for (cptr = oper_cptr_list; cptr; cptr = cptr->next_oper_client)
-    {
-      if(TestBit(cptr->umodes,flag))
-        {
-          (void)ircsprintf(nbuf, ":%s NOTICE %s :*** Notice -- ",
-                           me.name, cptr->name);
-          (void)strncat(nbuf, pattern, sizeof(nbuf) - strlen(nbuf));
-          
-          vsendto_one(cptr, nbuf, args);
-        }
-    } /* for (cptr = oper_cptr_list; cptr; cptr = cptr->next_oper_client) */
-
-  va_end(args);
-} /* sendto_realops_flags() */
-
-/*
- * sendto_realops_flags
- *
- *    Send to *local* ops with *all* matching flags (UMODE_INVALID terminated list)
- *
- * Warning: this is expensive to process. Use it carefully.
- */
-
-void
-sendto_realops_flags(int* flag, const char *pattern, ...)
-
-{
-  va_list args;
-  register aClient *cptr;
-  char nbuf[1024];
-  int* f;
-  int send;
-
-  va_start(args, pattern);
-
-  for (cptr = oper_cptr_list; cptr; cptr = cptr->next_oper_client)
-    {
-      send = 1;
-      for (f = flag; *f != UMODE_INVALID; f++)
-	if (!TestBit(cptr->umodes,*f))
-	  send = 0;
-      if(send)
-        {
-          (void)ircsprintf(nbuf, ":%s NOTICE %s :*** Notice -- ",
-                           me.name, cptr->name);
-          (void)strncat(nbuf, pattern, sizeof(nbuf) - strlen(nbuf));
-          
-          vsendto_one(cptr, nbuf, args);
-        }
-    } /* for (cptr = oper_cptr_list; cptr; cptr = cptr->next_oper_client) */
-
-  va_end(args);
-} /* sendto_realops_flags() */
-
-/*
 ** ts_warn
 **      Call sendto_ops, with some flood checking (at most 5 warnings
 **      every 5 seconds)
@@ -1453,7 +1217,7 @@
       warnings = 0;
     }
 
-  vsendto_realops(pattern, args);
+  vsendto_ops_flag_butone(NULL, UMODE_SERVNOTICE, pattern, args);
   vsprintf(buf, pattern, args);
   log(L_CRIT, "%s", buf);
 
@@ -1527,21 +1291,48 @@
 #endif /* SLAVE_SERVERS */
 
 /*
- * sendto_ops_flags_butone
+ * sendto_ops_flag_butone
  *
- *    Send to *global* ops only at a certain level...
+ *    Send to any client with the given umode
  */
 
 void
+sendto_ops_flag(int flag, const char *pattern, ...)
+
+{
+  va_list args;
+
+  va_start(args, pattern);
+
+  vsendto_ops_flag_butone(NULL, flag, pattern, args);
+
+  va_end(args);
+}
+
+void
 sendto_ops_flag_butone(aClient *one, int flag, const char *pattern, ...)
 
 {
   va_list args;
-  register aClient *cptr;
-  char nbuf[1024];
 
   va_start(args, pattern);
 
+  vsendto_ops_flag_butone(one, flag, pattern, args);
+
+  va_end(args);
+}
+
+/*
+vsendto_ops_flag_butone()
+ Send the given string to all clients with the given flag, excluding the given server connection
+*/
+
+static void
+vsendto_ops_flag_butone(aClient *one, int flag, const char *pattern, va_list args)
+{
+  register aClient *cptr;
+  char nbuf[1024];
+  
   for(cptr = local_cptr_list; cptr; cptr = cptr->next_local_client)
     {
       if (IsPerson(cptr) && TestBit(cptr->umodes,flag))
@@ -1561,6 +1352,72 @@
 	continue;
       vsendto_one(cptr, nbuf, args);
     }
+} /* vsendto_realops() */
+
+/* This one is used in the magic WALLOPS hack to propogate server notices */
+
+void
+sendto_ops_flag_butone_from(aClient *one, int flag, aClient* from, const char *pattern, ...)
+{
+  register aClient *cptr;
+  char nbuf[1024];
+  va_list args;
+
+  va_start(args, pattern);
+
+  for(cptr = local_cptr_list; cptr; cptr = cptr->next_local_client)
+    {
+      if (IsPerson(cptr) && TestBit(cptr->umodes,flag))
+	{
+	  (void)ircsprintf(nbuf, ":%s NOTICE %s :*** Notice -- ",
+			   from->name, cptr->name);
+	  (void)strncat(nbuf, pattern, sizeof(nbuf) - strlen(nbuf));
+	  vsendto_one(cptr, nbuf, args);
+	}
+    }
+  (void)ircsprintf(nbuf, ":%s WALLOPS %i :",
+		   from->name, flag);
+  (void)strncat(nbuf, pattern, sizeof(nbuf) - strlen(nbuf));
+  for(cptr = serv_cptr_list; cptr; cptr = cptr->next_server_client)
+    {
+      if (IsMe(cptr) || (one && (cptr == one->from)))
+	continue;
+      vsendto_one(cptr, nbuf, args);
+    }
+
   va_end(args);
 }
 
+/* This one is used to propogate without giving away the source (so protecting routing information) */
+
+void
+sendto_ops_flag_butone_hidefrom(aClient *one, int flag, const char *pattern, ...)
+{
+  register aClient *cptr;
+  char nbuf[1024];
+  va_list args;
+
+  va_start(args, pattern);
+
+  for(cptr = local_cptr_list; cptr; cptr = cptr->next_local_client)
+    {
+      if (IsPerson(cptr) && TestBit(cptr->umodes,flag))
+	{
+	  (void)ircsprintf(nbuf, ":%s NOTICE %s :*** Notice -- ",
+			   me.name, cptr->name);
+	  (void)strncat(nbuf, pattern, sizeof(nbuf) - strlen(nbuf));
+	  vsendto_one(cptr, nbuf, args);
+	}
+    }
+  (void)ircsprintf(nbuf, ":%s WALLOPS *%i :",
+		   me.name, flag);
+  (void)strncat(nbuf, pattern, sizeof(nbuf) - strlen(nbuf));
+  for(cptr = serv_cptr_list; cptr; cptr = cptr->next_server_client)
+    {
+      if (IsMe(cptr) || (one && (cptr == one->from)))
+	continue;
+      vsendto_one(cptr, nbuf, args);
+    }
+
+  va_end(args);
+}
diff -ruN -x configure -x *~ -x ircd-hybrid-6.0.orig -x *.rej ircd-hybrid-6.0.orig/src/version.c.SH ircd-hybrid-6.0/src/version.c.SH
--- ircd-hybrid-6.0.orig/src/version.c.SH	Sat Oct 21 07:36:15 2000
+++ ircd-hybrid-6.0/src/version.c.SH	Tue Jun 19 04:39:41 2001
@@ -119,6 +119,11 @@
   "their advice, opinions, and code to IRC.",
   "Thanks also to those who provide the kind sys admins who let me and",
   "others continue to develop IRC.",
+  "-------------------------------------------------------------------",
+  "The dancer-hybrid conversion has been arranged, orchestrated, and",
+  "generally slaughtered by the following nefarious individuals:",
+  "",
+  "Comments and bug reports to opn-coders@vc.bc.ca",
   "",
   0,
 };
