-add Networkbrowser and Mountmanager to easy browse network for networkdevices and...
[enigma2-plugins.git] / networkbrowser / src / lib / range.h
1 /*###########################################################################
2 #
3 # http://newnigma2.to
4 #
5 # $Id$ 
6 #
7 # Copyright (C) 2007 - 2008 by
8 # e2board Team <team@newnigma2.to>
9 # License: GPL
10 #
11 # This program is free software; you can redistribute it and/or modify
12 # it under the terms of the GNU General Public License as published by
13 # the Free Software Foundation; either version 2 of the License, or
14 # (at your option) any later version.
15 #
16 # This program is distributed in the hope that it will be useful,
17 # but WITHOUT ANY WARRANTY; without even the implied warranty of
18 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 # GNU General Public License for more details.
20 #
21 # You should have received a copy of the GNU General Public License
22 # along with this program; if not, write to the Free Software
23 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
24 #
25 ###########################################################################*/
26
27 #ifndef RANGE_H
28 #define RANGE_H
29
30 #include <stdio.h>
31 #include <ctype.h>
32 #include <sys/types.h>
33 #include <sys/socket.h>
34 #include <netinet/in.h>
35 #include <arpa/inet.h>
36
37 struct ip_range {
38         unsigned long start_ip; // IP addresses in _host_ order, not network
39         unsigned long end_ip;   
40 };
41
42 /* is_ip checks if supplied string is an ip address in dotted-decimal
43    notation, and fills both members of range structure with its numerical value
44    (host byte order)/ Returns 1 on success, 0 on failure */
45 int is_ip(char* string, struct ip_range* range); 
46
47 /* is_range1 checks if supplied string is an IP address range in
48    form xxx.xxx.xxx.xxx/xx (as in 192.168.1.2/24) and fills
49    range structure with start and end ip addresses of the interval.
50    Returns 1 on success, 0 on failure */
51 int is_range1(char* string, struct ip_range* range);
52
53
54 /* next_address function writes next ip address in range after prev_addr to
55    structure pointed by next_addr. Returns 1 if next ip found and 0 otherwise */ 
56 int next_address(const struct ip_range* range, const struct in_addr* prev_addr, 
57                  struct in_addr* next_addr); 
58         
59 /* is_range2 checks if supplied string is an IP address range in
60    form xxx.xxx.xxx.xxx-xxx (as in 192.168.1.2-15) and fills
61    range structure with start and end ip addresses of the interval.
62    Returns 1 on success, 0 on failure */
63 int is_range2(char* string, struct ip_range* range);
64
65 int print_range(const struct ip_range* range); 
66
67 #endif /* RANGE_H */