+GLOBAL BOOLEAN IRC_SERVER( CLIENT *Client, REQUEST *Req )
+{
+ assert( Client != NULL );
+ assert( Req != NULL );
+
+ /* Fehler liefern, wenn kein lokaler Client */
+ if( Client->conn_id <= NONE ) return IRC_WriteStrClient( Client, This_Server, ERR_UNKNOWNCOMMAND_MSG, Client_Nick( Client ), Req->command );
+
+ if( Client->type == CLIENT_GOTPASSSERVER )
+ {
+ /* Verbindung soll als Server-Server-Verbindung registriert werden */
+ Log( LOG_DEBUG, "Connection %d: got SERVER command (new server link) ...", Client->conn_id );
+
+ /* Falsche Anzahl Parameter? */
+ if( Req->argc != 3 ) return IRC_WriteStrClient( Client, This_Server, ERR_NEEDMOREPARAMS_MSG, Client_Nick( Client ), Req->command );
+
+ /* Ist ein Server mit dieser ID bereits registriert? */
+ if( ! Client_CheckID( Client, Req->argv[0] )) return DISCONNECTED;
+
+ /* Server-Strukturen fuellen ;-) */
+ strncpy( Client->nick, Req->argv[0], CLIENT_ID_LEN );
+ Client->nick[CLIENT_ID_LEN - 1] = '\0';
+ strncpy( Client->info, Req->argv[2], CLIENT_INFO_LEN );
+ Client->info[CLIENT_INFO_LEN - 1] = '\0';
+
+ Log( LOG_NOTICE, "Server \"%s\" (%s) registered (connection %d).", Client->nick, Client->info, Client->conn_id );
+
+ Client->type = CLIENT_SERVER;
+ return CONNECTED;
+ }
+ else if( Client->type == CLIENT_SERVER )
+ {
+ /* Neuer Server wird im Netz angekuendigt */
+ return CONNECTED;
+ }
+ else return IRC_WriteStrClient( Client, This_Server, ERR_NEEDMOREPARAMS_MSG, Client_Nick( Client ), Req->command );
+} /* IRC_SERVER */
+
+
+GLOBAL BOOLEAN IRC_NJOIN( CLIENT *Client, REQUEST *Req )
+{
+ assert( Client != NULL );
+ assert( Req != NULL );
+
+ if( Client->type != CLIENT_SERVER ) return IRC_WriteStrClient( Client, This_Server, ERR_NOTREGISTEREDSERVER_MSG, Client_Nick( Client ));
+
+ return CONNECTED;
+} /* IRC_NJOIN */
+
+