|
|
BSD 4.3reno
/*
******************************************************************************
*
* Module: bb_set.c
*
* Functions:
* bb_set_1() - Set an entry in the billboard.
* bb_unset_1() - Unset an entry in the billboard.
*
*
******************************************************************************
*/
/*
******************************************************************************
* Include Files
******************************************************************************
*/
#include <stdio.h>
#include <rpc/rpc.h>
#include "common.h"
#include "protocol.h"
#include "server.h"
void bb_board_tag();
/*************************************************************************
** **
** bb_set_1() - Set a location in the board. This means that the **
** client has successfully tested his client against the specified **
** server. A password is required. **
** **
*************************************************************************/
BB_set_out *
bb_set_1( p_set)
BB_set_in *p_set; /* The set_in structure. */
{
static BB_set_out result; /* The result of the set operation. */
result.status = BB_SUCCESS;
/*
** If the machine being used to send this request is not one
** of the ones owned by this client group then a password must
** be specified.
*/
if ( bb_check_ip( p_set->client) != BB_SUCCESS )
{
if ( (result.status=bb_check_passwd( p_set->client, p_set->passwd))
!= BB_SUCCESS )
{
result.status = BB_BAD_PASSWD;
return &result;
}
}
/*
** If the server being verified against is the universal server,
** then change the phase of the client.
*/
if ( strncmp( BB_SUN_SERVER, p_set->server, BB_ID_NAME_LEN) == 0 )
{
if ( bb_set_phase( p_set->client, BB_SUN_PHASE) != BB_SUCCESS )
{
result.status = BB_BAD_PHASE;
return &result;
}
}
/*
** If the phase is not correct don't let them change the board.
*/
if ( bb_phase_ok( p_set->client) != BB_SUCCESS )
{
result.status = BB_BAD_PHASE;
return &result;
}
/*
** They are allowed to place a mark in the bill board, so lets do it.
*/
bb_board_tag( p_set, &result, BB_SET);
return &result;
}
/*************************************************************************
** **
** bb_unset_1() - Unset a previously set spot in the bill board. **
** **
*************************************************************************/
BB_set_out *
bb_unset_1( p_set)
BB_set_in *p_set; /* The set_in structure. */
{
static BB_set_out result; /* The result of the set operation. */
/*
** If the machine being used to send this request is not one
** of the ones owned by this client group then a password must
** be specified.
*/
if ( bb_check_ip( p_set->client) != BB_SUCCESS )
{
if ( bb_check_passwd( p_set->client, p_set->passwd) != SUCCESS )
{
result.status = BB_BAD_PASSWD;
return &result;
}
}
/*
** If the server being unverified is the universal server,
** then change the phase of the client.
*/
if ( strncmp( BB_SUN_SERVER, p_set->server, BB_ID_NAME_LEN) == 0 )
{
if ( bb_unset_phase( p_set->client, BB_SUN_PHASE) != BB_SUCCESS )
{
result.status = BB_BAD_PHASE;
return &result;
}
}
/*
** They are allowed to place a mark in the bill board, so lets do it.
*/
bb_board_tag( p_set, &result, BB_UNSET);
return &result;
}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.