|
|
1.1 root 1: /*
2: ******************************************************************************
3: *
4: * Module: bb_set.c
5: *
6: * Functions:
7: * bb_set_1() - Set an entry in the billboard.
8: * bb_unset_1() - Unset an entry in the billboard.
9: *
10: *
11: ******************************************************************************
12: */
13:
14: /*
15: ******************************************************************************
16: * Include Files
17: ******************************************************************************
18: */
19: #include <stdio.h>
20: #include <rpc/rpc.h>
21: #include "common.h"
22: #include "protocol.h"
23: #include "server.h"
24:
25: void bb_board_tag();
26:
27:
28: /*************************************************************************
29: ** **
30: ** bb_set_1() - Set a location in the board. This means that the **
31: ** client has successfully tested his client against the specified **
32: ** server. A password is required. **
33: ** **
34: *************************************************************************/
35: BB_set_out *
36: bb_set_1( p_set)
37: BB_set_in *p_set; /* The set_in structure. */
38: {
39: static BB_set_out result; /* The result of the set operation. */
40:
41: result.status = BB_SUCCESS;
42:
43: /*
44: ** If the machine being used to send this request is not one
45: ** of the ones owned by this client group then a password must
46: ** be specified.
47: */
48: if ( bb_check_ip( p_set->client) != BB_SUCCESS )
49: {
50: if ( (result.status=bb_check_passwd( p_set->client, p_set->passwd))
51: != BB_SUCCESS )
52: {
53: result.status = BB_BAD_PASSWD;
54: return &result;
55: }
56: }
57:
58: /*
59: ** If the server being verified against is the universal server,
60: ** then change the phase of the client.
61: */
62: if ( strncmp( BB_SUN_SERVER, p_set->server, BB_ID_NAME_LEN) == 0 )
63: {
64: if ( bb_set_phase( p_set->client, BB_SUN_PHASE) != BB_SUCCESS )
65: {
66: result.status = BB_BAD_PHASE;
67: return &result;
68: }
69: }
70:
71: /*
72: ** If the phase is not correct don't let them change the board.
73: */
74: if ( bb_phase_ok( p_set->client) != BB_SUCCESS )
75: {
76: result.status = BB_BAD_PHASE;
77: return &result;
78: }
79:
80: /*
81: ** They are allowed to place a mark in the bill board, so lets do it.
82: */
83: bb_board_tag( p_set, &result, BB_SET);
84:
85: return &result;
86: }
87:
88:
89:
90: /*************************************************************************
91: ** **
92: ** bb_unset_1() - Unset a previously set spot in the bill board. **
93: ** **
94: *************************************************************************/
95: BB_set_out *
96: bb_unset_1( p_set)
97: BB_set_in *p_set; /* The set_in structure. */
98: {
99: static BB_set_out result; /* The result of the set operation. */
100:
101: /*
102: ** If the machine being used to send this request is not one
103: ** of the ones owned by this client group then a password must
104: ** be specified.
105: */
106: if ( bb_check_ip( p_set->client) != BB_SUCCESS )
107: {
108: if ( bb_check_passwd( p_set->client, p_set->passwd) != SUCCESS )
109: {
110: result.status = BB_BAD_PASSWD;
111: return &result;
112: }
113: }
114:
115: /*
116: ** If the server being unverified is the universal server,
117: ** then change the phase of the client.
118: */
119: if ( strncmp( BB_SUN_SERVER, p_set->server, BB_ID_NAME_LEN) == 0 )
120: {
121: if ( bb_unset_phase( p_set->client, BB_SUN_PHASE) != BB_SUCCESS )
122: {
123: result.status = BB_BAD_PHASE;
124: return &result;
125: }
126: }
127:
128: /*
129: ** They are allowed to place a mark in the bill board, so lets do it.
130: */
131: bb_board_tag( p_set, &result, BB_UNSET);
132:
133: return &result;
134: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.