home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fresh Fish 8
/
FreshFishVol8-CD2.bin
/
bbs
/
comm
/
amitcp-3.0ß2.lha
/
AmiTCP
/
src
/
amitcp
/
kern
/
accesscontrol.c
next >
Wrap
C/C++ Source or Header
|
1994-04-06
|
2KB
|
63 lines
RCS_ID_C="$Id: accesscontrol.c,v 3.2 1994/04/06 15:36:50 too Exp $";
/*
* Copyright (c) 1993, 1994 AmiTCP/IP Group, <amitcp-group@hut.fi>,
* Helsinki University of Technology, Finland.
* All rights reserved.
*
* Created: Tue Mar 22 22:24:17 1994 too
* Last modified: Wed Apr 6 18:36:22 1994 too
*
* HISTORY
* $Log: accesscontrol.c,v $
* Revision 3.2 1994/04/06 15:36:50 too
* Added checking for private ports
*
* Revision 3.1 1994/03/26 09:37:18 too
* Initial relelase
*/
#include <exec/types.h>
#include <sys/systm.h>
#include <sys/malloc.h>
#include <kern/amiga_config.h>
#include <kern/amiga_netdb.h>
#include <kern/accesscontrol.h>
#include <sys/syslog.h>
int controlaccess(struct in_addr shost, unsigned short dport)
{
int i;
LOCK_R_NDB(NDB);
for (i = 0; NDB->ndb_AccessTable[i].ai_flags; i++)
#define AT NDB->ndb_AccessTable[i]
#define host (*(ULONG *)&shost) /* XXX */
if ((AT.ai_port == 0 && (!(AT.ai_flags & ACF_PRIVONLY) || dport < 1024)
|| AT.ai_port == dport) &&
((host ^ AT.ai_host) & AT.ai_mask) == 0) {
/*
* match
*/
int allow = AT.ai_flags & ACF_ALLOW;
if (AT.ai_flags & ACF_LOG)
log(allow? LOG_INFO: LOG_NOTICE,
"Access from host %ld.%ld.%ld.%ld to port %ld %s\n",
host>>24 & 0xff, host>>16 & 0xff, host>>8 & 0xff, host & 0xff,
dport, allow? "allowed": "denied");
UNLOCK_NDB(NDB);
return allow;
#undef allow
#undef host
#undef AT
}
/*
* No match. allow by default.
*/
UNLOCK_NDB(NDB);
return ACF_ALLOW;
}