1/* $Id: upnppermissions.h,v 1.10 2014/03/07 10:43:29 nanard Exp $ */ 2/* MiniUPnP project 3 * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ 4 * (c) 2006-2014 Thomas Bernard 5 * This software is subject to the conditions detailed 6 * in the LICENCE file provided within the distribution */ 7 8#ifndef UPNPPERMISSIONS_H_INCLUDED 9#define UPNPPERMISSIONS_H_INCLUDED 10 11#include <sys/types.h> 12#include <sys/socket.h> 13#include <netinet/in.h> 14#include "config.h" 15 16/* UPnP permission rule samples: 17 * allow 1024-65535 192.168.3.0/24 1024-65535 18 * deny 0-65535 192.168.1.125/32 0-65535 */ 19struct upnpperm { 20 enum {UPNPPERM_ALLOW=1, UPNPPERM_DENY=2 } type; 21 /* is it an allow or deny permission rule ? */ 22 u_short eport_min, eport_max; /* external port range */ 23 struct in_addr address, mask; /* ip/mask */ 24 u_short iport_min, iport_max; /* internal port range */ 25}; 26 27/* read_permission_line() 28 * returns: 0 line read okay 29 * -1 error reading line 30 * 31 * line sample : 32 * allow 1024-65535 192.168.3.0/24 1024-65535 33 * allow 22 192.168.4.33/32 22 34 * deny 0-65535 0.0.0.0/0 0-65535 */ 35int 36read_permission_line(struct upnpperm * perm, 37 char * p); 38 39/* check_upnp_rule_against_permissions() 40 * returns: 0 if the upnp rule should be rejected, 41 * 1 if it could be accepted */ 42int 43check_upnp_rule_against_permissions(const struct upnpperm * permary, 44 int n_perms, 45 u_short eport, struct in_addr address, 46 u_short iport); 47 48#ifdef USE_MINIUPNPDCTL 49void 50write_permlist(int fd, const struct upnpperm * permary, 51 int nperms); 52#endif 53 54#endif 55 56