Share common routines into a reg lib, other objects will later reuse.
[platform/upstream/crda.git] / reglib.h
1 #include <stdlib.h>
2 #include <linux/types.h>
3
4 /* Common regulatory functions and helpers */
5
6 void *crda_get_file_ptr(__u8 *db, int dblen, int structlen, __be32 ptr);
7 int crda_verify_db_signature(__u8 *db, int dblen, int siglen);
8
9 static inline int is_world_regdom(const char *alpha2)
10 {
11         if (alpha2[0] == '0' && alpha2[1] == '0')
12                 return 1;
13         return 0;
14 }
15
16 static inline int isalpha_upper(char letter)
17 {
18         if (letter >= 'A' && letter <= 'Z')
19                 return 1;
20         return 0;
21 }
22
23 static inline int is_alpha2(const char *alpha2)
24 {
25         if (isalpha_upper(alpha2[0]) && isalpha_upper(alpha2[1]))
26                 return 1;
27         return 0;
28 }
29
30 /* Avoid stdlib */
31 static inline int is_len_2(const char *alpha2)
32 {
33         if (alpha2[0] == '\0' || (alpha2[1] == '\0'))
34                 return 0;
35         if (alpha2[2] == '\0')
36                 return 1;
37         return 0;
38 }
39
40 static inline int is_valid_regdom(const char *alpha2)
41 {
42         if (!is_len_2(alpha2))
43                 return 0;
44
45         if (!is_alpha2(alpha2) && !is_world_regdom(alpha2))
46                 return 0;
47
48         return 1;
49 }