-
Notifications
You must be signed in to change notification settings - Fork 0
/
nm-conf.h
154 lines (127 loc) · 5.16 KB
/
nm-conf.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
#ifndef _NM_CONF_H
#define _NM_CONF_H
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <ctype.h>
#include <debian-installer.h>
#ifdef WIRELESS
#include <iwlib.h>
#endif
/* Global variables. */
#include "netcfg.h"
/* Constants for maximum size for Network Manager config fields. */
#define NM_MAX_LEN_BUF 1024 /* Max len for most buffers */
#define NM_MAX_LEN_ID 128
#define NM_MAX_LEN_SSID 128
#define NM_MAX_LEN_MAC_ADDR 20 /* AA:BB:CC:DD:EE:FF format */
#define NM_MAX_LEN_IPV4 20 /* x.x.x.x format */
#define NM_MAX_LEN_WPA_PSK 65 /* 64 standard + NULL char */
#define NM_MAX_LEN_WEP_KEY 30 /* Rough estimation (should be 26) */
#define NM_MAX_LEN_PATH 128 /* Assume a path won't be longer */
#define NM_MAX_LEN_UUID 37
#define NM_NO_BITS_IPV4 32
/* Some Network Manager default values for connection types. */
#define NM_DEFAULT_WIRED "802-3-ethernet"
#define NM_DEFAULT_WIRED_NAME "Wired connection 1"
#define NM_DEFAULT_WIRELESS "802-11-wireless"
#define NM_DEFAULT_WIRELESS_SECURITY "802-11-wireless-security"
#define NM_DEFAULT_PATH_FOR_MAC "/sys/class/net/%s/address"
#define NM_CONFIG_FILE_PATH "/etc/NetworkManager/system-connections"
#define NM_CONNECTION_FILE "/tmp/connection_type"
#define NM_SETTINGS_CONNECTION "[connection]"
#define NM_SETTINGS_WIRELESS "["NM_DEFAULT_WIRELESS"]"
#define NM_SETTINGS_WIRED "["NM_DEFAULT_WIRED"]"
#define NM_SETTINGS_WIRELESS_SECURITY "["NM_DEFAULT_WIRELESS_SECURITY"]"
#define NM_SETTINGS_IPV4 "[ipv4]"
#define NM_SETTINGS_IPV6 "[ipv6]"
/* Minimalist structures for storing basic elements in order to write a Network
* Manager format config file.
*
* See full specifications at:
*
* http://projects.gnome.org/NetworkManager/developers/settings-spec-08.html
*
*/
typedef struct nm_connection
{
char id[NM_MAX_LEN_ID];
char uuid[NM_MAX_LEN_UUID];
enum {WIRED, WIFI} type;
int manual; /* 1 = true, 0 = false */
} nm_connection;
typedef struct nm_wired
{
char mac_addr[NM_MAX_LEN_MAC_ADDR];
} nm_wired;
typedef struct nm_wireless
{
char ssid[NM_MAX_LEN_SSID];
char mac_addr[NM_MAX_LEN_MAC_ADDR];
enum {AD_HOC, INFRASTRUCTURE} mode;
enum {FALSE = 0, TRUE = 1} is_secured; /* 1 = secure, 0 = unsecure */
} nm_wireless;
typedef struct nm_wireless_security
{
enum {WEP_KEY, WPA_PSK} key_mgmt;
union
{
char psk[NM_MAX_LEN_WPA_PSK];
struct
{
enum {HEX_ASCII = 1, PASSPHRASE = 2} wep_key_type;
enum {OPEN, SHARED} auth_alg;
unsigned char wep_key0[NM_MAX_LEN_WEP_KEY];
};
};
} nm_wireless_security;
typedef struct nm_ipvX
{
int used; /* 1 = true, 0 = false */
enum {AUTO, MANUAL, IGNORE} method;
char * ip_address;
char * gateway;
char * nameservers[NETCFG_NAMESERVERS_MAX];
unsigned int masklen;
} nm_ipvX;
typedef struct nm_config_info
{
nm_connection connection;
nm_wired wired;
nm_wireless wireless;
nm_wireless_security wireless_security;
nm_ipvX ipv4;
nm_ipvX ipv6;
} nm_config_info;
/* Here come functions: */
#ifdef WIRELESS
void nm_write_wireless_specific_options(FILE *config_file,
struct nm_config_info *nmconf);
void nm_write_wireless_security(FILE *config_file, nm_wireless_security
wireless_security);
#endif
void nm_write_connection(FILE *config_file, nm_connection connection);
void nm_write_wired_specific_options(FILE *config_file,
struct nm_config_info *nmconf);
void nm_write_ipv4(FILE *config_file, nm_ipvX ipv4);
void nm_write_ipv6(FILE *config_file, nm_ipvX ipv6);
void nm_write_configuration(struct nm_config_info nmconf);
void nm_write_connection_type(struct nm_config_info nmconf);
#ifdef WIRELESS
void nm_get_wireless_connection(struct netcfg_interface *niface, nm_connection *connection);
void nm_get_wireless_specific_options(struct netcfg_interface *niface, nm_wireless *wireless);
void nm_get_wireless_security(struct netcfg_interface *niface, nm_wireless_security *wireless_security);
#endif
void nm_get_wired_connection(nm_connection *connection);
void nm_get_mac_address(char *interface, char *mac_addr);
void nm_get_wired_specific_options(struct netcfg_interface *niface, nm_wired *wired);
void nm_get_ipv4(struct netcfg_interface *niface, nm_ipvX *ipv4);
void nm_get_ipv6(struct netcfg_interface *niface, nm_ipvX *ipv6);
#ifdef WIRELESS
void nm_get_wireless_config(struct netcfg_interface *niface, struct nm_config_info *nmconf);
#endif
void nm_get_wired_config(struct netcfg_interface *niface, struct nm_config_info *nmconf);
void nm_get_configuration(struct netcfg_interface *niface, struct nm_config_info *nmconf);
#endif