Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
L
lxc
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Chen Yisong
lxc
Commits
29c98ddd
Commit
29c98ddd
authored
Jul 20, 2018
by
2xsec
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
confile_utils: fix return value & cleanups
Signed-off-by:
2xsec
<
dh48.jeong@samsung.com
>
parent
8fd3e219
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
38 additions
and
18 deletions
+38
-18
confile_utils.c
src/lxc/confile_utils.c
+37
-17
confile_utils.h
src/lxc/confile_utils.h
+1
-1
No files found.
src/lxc/confile_utils.c
View file @
29c98ddd
...
@@ -149,6 +149,7 @@ int parse_idmaps(const char *idmap, char *type, unsigned long *nsid,
...
@@ -149,6 +149,7 @@ int parse_idmaps(const char *idmap, char *type, unsigned long *nsid,
*/
*/
if
(
*
(
slide
+
strspn
(
slide
,
"
\t\r\n
"
))
!=
'\0'
)
if
(
*
(
slide
+
strspn
(
slide
,
"
\t\r\n
"
))
!=
'\0'
)
goto
on_error
;
goto
on_error
;
/* Mark end of range. */
/* Mark end of range. */
*
slide
=
'\0'
;
*
slide
=
'\0'
;
...
@@ -211,6 +212,7 @@ struct lxc_netdev *lxc_network_add(struct lxc_list *networks, int idx, bool tail
...
@@ -211,6 +212,7 @@ struct lxc_netdev *lxc_network_add(struct lxc_list *networks, int idx, bool tail
lxc_list_add_tail
(
networks
,
newlist
);
lxc_list_add_tail
(
networks
,
newlist
);
else
else
lxc_list_add
(
networks
,
newlist
);
lxc_list_add
(
networks
,
newlist
);
return
netdev
;
return
netdev
;
}
}
...
@@ -265,23 +267,29 @@ void lxc_log_configured_netdevs(const struct lxc_conf *conf)
...
@@ -265,23 +267,29 @@ void lxc_log_configured_netdevs(const struct lxc_conf *conf)
TRACE
(
"index: %zd"
,
netdev
->
idx
);
TRACE
(
"index: %zd"
,
netdev
->
idx
);
TRACE
(
"ifindex: %d"
,
netdev
->
ifindex
);
TRACE
(
"ifindex: %d"
,
netdev
->
ifindex
);
switch
(
netdev
->
type
)
{
switch
(
netdev
->
type
)
{
case
LXC_NET_VETH
:
case
LXC_NET_VETH
:
TRACE
(
"type: veth"
);
TRACE
(
"type: veth"
);
if
(
netdev
->
priv
.
veth_attr
.
pair
[
0
]
!=
'\0'
)
if
(
netdev
->
priv
.
veth_attr
.
pair
[
0
]
!=
'\0'
)
TRACE
(
"veth pair: %s"
,
TRACE
(
"veth pair: %s"
,
netdev
->
priv
.
veth_attr
.
pair
);
netdev
->
priv
.
veth_attr
.
pair
);
if
(
netdev
->
priv
.
veth_attr
.
veth1
[
0
]
!=
'\0'
)
if
(
netdev
->
priv
.
veth_attr
.
veth1
[
0
]
!=
'\0'
)
TRACE
(
"veth1 : %s"
,
TRACE
(
"veth1 : %s"
,
netdev
->
priv
.
veth_attr
.
veth1
);
netdev
->
priv
.
veth_attr
.
veth1
);
if
(
netdev
->
priv
.
veth_attr
.
ifindex
>
0
)
if
(
netdev
->
priv
.
veth_attr
.
ifindex
>
0
)
TRACE
(
"host side ifindex for veth device: %d"
,
TRACE
(
"host side ifindex for veth device: %d"
,
netdev
->
priv
.
veth_attr
.
ifindex
);
netdev
->
priv
.
veth_attr
.
ifindex
);
break
;
break
;
case
LXC_NET_MACVLAN
:
case
LXC_NET_MACVLAN
:
TRACE
(
"type: macvlan"
);
TRACE
(
"type: macvlan"
);
if
(
netdev
->
priv
.
macvlan_attr
.
mode
>
0
)
{
if
(
netdev
->
priv
.
macvlan_attr
.
mode
>
0
)
{
char
*
macvlan_mode
;
char
*
macvlan_mode
;
macvlan_mode
=
lxc_macvlan_flag_to_mode
(
macvlan_mode
=
lxc_macvlan_flag_to_mode
(
netdev
->
priv
.
macvlan_attr
.
mode
);
netdev
->
priv
.
macvlan_attr
.
mode
);
TRACE
(
"macvlan mode: %s"
,
TRACE
(
"macvlan mode: %s"
,
...
@@ -295,10 +303,10 @@ void lxc_log_configured_netdevs(const struct lxc_conf *conf)
...
@@ -295,10 +303,10 @@ void lxc_log_configured_netdevs(const struct lxc_conf *conf)
break
;
break
;
case
LXC_NET_PHYS
:
case
LXC_NET_PHYS
:
TRACE
(
"type: phys"
);
TRACE
(
"type: phys"
);
if
(
netdev
->
priv
.
phys_attr
.
ifindex
>
0
)
{
if
(
netdev
->
priv
.
phys_attr
.
ifindex
>
0
)
TRACE
(
"host side ifindex for phys device: %d"
,
TRACE
(
"host side ifindex for phys device: %d"
,
netdev
->
priv
.
phys_attr
.
ifindex
);
netdev
->
priv
.
phys_attr
.
ifindex
);
}
break
;
break
;
case
LXC_NET_EMPTY
:
case
LXC_NET_EMPTY
:
TRACE
(
"type: empty"
);
TRACE
(
"type: empty"
);
...
@@ -314,16 +322,22 @@ void lxc_log_configured_netdevs(const struct lxc_conf *conf)
...
@@ -314,16 +322,22 @@ void lxc_log_configured_netdevs(const struct lxc_conf *conf)
if
(
netdev
->
type
!=
LXC_NET_EMPTY
)
{
if
(
netdev
->
type
!=
LXC_NET_EMPTY
)
{
TRACE
(
"flags: %s"
,
TRACE
(
"flags: %s"
,
netdev
->
flags
==
IFF_UP
?
"up"
:
"none"
);
netdev
->
flags
==
IFF_UP
?
"up"
:
"none"
);
if
(
netdev
->
link
[
0
]
!=
'\0'
)
if
(
netdev
->
link
[
0
]
!=
'\0'
)
TRACE
(
"link: %s"
,
netdev
->
link
);
TRACE
(
"link: %s"
,
netdev
->
link
);
if
(
netdev
->
name
[
0
]
!=
'\0'
)
if
(
netdev
->
name
[
0
]
!=
'\0'
)
TRACE
(
"name: %s"
,
netdev
->
name
);
TRACE
(
"name: %s"
,
netdev
->
name
);
if
(
netdev
->
hwaddr
)
if
(
netdev
->
hwaddr
)
TRACE
(
"hwaddr: %s"
,
netdev
->
hwaddr
);
TRACE
(
"hwaddr: %s"
,
netdev
->
hwaddr
);
if
(
netdev
->
mtu
)
if
(
netdev
->
mtu
)
TRACE
(
"mtu: %s"
,
netdev
->
mtu
);
TRACE
(
"mtu: %s"
,
netdev
->
mtu
);
if
(
netdev
->
upscript
)
if
(
netdev
->
upscript
)
TRACE
(
"upscript: %s"
,
netdev
->
upscript
);
TRACE
(
"upscript: %s"
,
netdev
->
upscript
);
if
(
netdev
->
downscript
)
if
(
netdev
->
downscript
)
TRACE
(
"downscript: %s"
,
netdev
->
downscript
);
TRACE
(
"downscript: %s"
,
netdev
->
downscript
);
...
@@ -345,11 +359,13 @@ void lxc_log_configured_netdevs(const struct lxc_conf *conf)
...
@@ -345,11 +359,13 @@ void lxc_log_configured_netdevs(const struct lxc_conf *conf)
TRACE
(
"ipv6 gateway auto: %s"
,
TRACE
(
"ipv6 gateway auto: %s"
,
netdev
->
ipv6_gateway_auto
?
"true"
:
"false"
);
netdev
->
ipv6_gateway_auto
?
"true"
:
"false"
);
if
(
netdev
->
ipv6_gateway
)
{
if
(
netdev
->
ipv6_gateway
)
{
inet_ntop
(
AF_INET6
,
netdev
->
ipv6_gateway
,
inet_ntop
(
AF_INET6
,
netdev
->
ipv6_gateway
,
bufinet6
,
sizeof
(
bufinet6
));
bufinet6
,
sizeof
(
bufinet6
));
TRACE
(
"ipv6 gateway: %s"
,
bufinet6
);
TRACE
(
"ipv6 gateway: %s"
,
bufinet6
);
}
}
lxc_list_for_each_safe
(
cur
,
&
netdev
->
ipv6
,
next
)
{
lxc_list_for_each_safe
(
cur
,
&
netdev
->
ipv6
,
next
)
{
inet6dev
=
cur
->
elem
;
inet6dev
=
cur
->
elem
;
inet_ntop
(
AF_INET6
,
&
inet6dev
->
addr
,
bufinet6
,
inet_ntop
(
AF_INET6
,
&
inet6dev
->
addr
,
bufinet6
,
...
@@ -477,7 +493,7 @@ int set_config_string_item(char **conf_item, const char *value)
...
@@ -477,7 +493,7 @@ int set_config_string_item(char **conf_item, const char *value)
new_value
=
strdup
(
value
);
new_value
=
strdup
(
value
);
if
(
!
new_value
)
{
if
(
!
new_value
)
{
SYSERROR
(
"
f
ailed to duplicate string
\"
%s
\"
"
,
value
);
SYSERROR
(
"
F
ailed to duplicate string
\"
%s
\"
"
,
value
);
return
-
1
;
return
-
1
;
}
}
...
@@ -505,8 +521,10 @@ int config_ip_prefix(struct in_addr *addr)
...
@@ -505,8 +521,10 @@ int config_ip_prefix(struct in_addr *addr)
{
{
if
(
IN_CLASSA
(
addr
->
s_addr
))
if
(
IN_CLASSA
(
addr
->
s_addr
))
return
32
-
IN_CLASSA_NSHIFT
;
return
32
-
IN_CLASSA_NSHIFT
;
if
(
IN_CLASSB
(
addr
->
s_addr
))
if
(
IN_CLASSB
(
addr
->
s_addr
))
return
32
-
IN_CLASSB_NSHIFT
;
return
32
-
IN_CLASSB_NSHIFT
;
if
(
IN_CLASSC
(
addr
->
s_addr
))
if
(
IN_CLASSC
(
addr
->
s_addr
))
return
32
-
IN_CLASSC_NSHIFT
;
return
32
-
IN_CLASSC_NSHIFT
;
...
@@ -521,15 +539,14 @@ int network_ifname(char *valuep, const char *value, size_t size)
...
@@ -521,15 +539,14 @@ int network_ifname(char *valuep, const char *value, size_t size)
return
-
1
;
return
-
1
;
retlen
=
strlcpy
(
valuep
,
value
,
size
);
retlen
=
strlcpy
(
valuep
,
value
,
size
);
if
(
retlen
>=
size
)
{
if
(
retlen
>=
size
)
ERROR
(
"Network devie name
\"
%s
\"
is too long (>= %zu)"
,
value
,
ERROR
(
"Network devie name
\"
%s
\"
is too long (>= %zu)"
,
value
,
size
);
size
);
}
return
0
;
return
0
;
}
}
int
rand_complete_hwaddr
(
char
*
hwaddr
)
void
rand_complete_hwaddr
(
char
*
hwaddr
)
{
{
const
char
hex
[]
=
"0123456789abcdef"
;
const
char
hex
[]
=
"0123456789abcdef"
;
char
*
curs
=
hwaddr
;
char
*
curs
=
hwaddr
;
...
@@ -558,7 +575,6 @@ int rand_complete_hwaddr(char *hwaddr)
...
@@ -558,7 +575,6 @@ int rand_complete_hwaddr(char *hwaddr)
}
}
curs
++
;
curs
++
;
}
}
return
0
;
}
}
bool
lxc_config_net_hwaddr
(
const
char
*
line
)
bool
lxc_config_net_hwaddr
(
const
char
*
line
)
...
@@ -568,11 +584,15 @@ bool lxc_config_net_hwaddr(const char *line)
...
@@ -568,11 +584,15 @@ bool lxc_config_net_hwaddr(const char *line)
if
(
strncmp
(
line
,
"lxc.net"
,
7
)
!=
0
)
if
(
strncmp
(
line
,
"lxc.net"
,
7
)
!=
0
)
return
false
;
return
false
;
if
(
strncmp
(
line
,
"lxc.net.hwaddr"
,
14
)
==
0
)
if
(
strncmp
(
line
,
"lxc.net.hwaddr"
,
14
)
==
0
)
return
true
;
return
true
;
if
(
strncmp
(
line
,
"lxc.network.hwaddr"
,
18
)
==
0
)
if
(
strncmp
(
line
,
"lxc.network.hwaddr"
,
18
)
==
0
)
return
true
;
return
true
;
if
(
sscanf
(
line
,
"lxc.net.%u.%6s"
,
&
index
,
tmp
)
==
2
||
sscanf
(
line
,
"lxc.network.%u.%6s"
,
&
index
,
tmp
)
==
2
)
if
(
sscanf
(
line
,
"lxc.net.%u.%6s"
,
&
index
,
tmp
)
==
2
||
sscanf
(
line
,
"lxc.network.%u.%6s"
,
&
index
,
tmp
)
==
2
)
return
strncmp
(
tmp
,
"hwaddr"
,
6
)
==
0
;
return
strncmp
(
tmp
,
"hwaddr"
,
6
)
==
0
;
return
false
;
return
false
;
...
@@ -639,7 +659,7 @@ int lxc_get_conf_str(char *retv, int inlen, const char *value)
...
@@ -639,7 +659,7 @@ int lxc_get_conf_str(char *retv, int inlen, const char *value)
if
(
retv
&&
inlen
>=
value_len
+
1
)
if
(
retv
&&
inlen
>=
value_len
+
1
)
memcpy
(
retv
,
value
,
value_len
+
1
);
memcpy
(
retv
,
value
,
value_len
+
1
);
return
strlen
(
value
)
;
return
value_len
;
}
}
int
lxc_get_conf_int
(
struct
lxc_conf
*
c
,
char
*
retv
,
int
inlen
,
int
v
)
int
lxc_get_conf_int
(
struct
lxc_conf
*
c
,
char
*
retv
,
int
inlen
,
int
v
)
...
@@ -701,6 +721,7 @@ bool parse_limit_value(const char **value, rlim_t *res)
...
@@ -701,6 +721,7 @@ bool parse_limit_value(const char **value, rlim_t *res)
*
res
=
strtoull
(
*
value
,
&
endptr
,
10
);
*
res
=
strtoull
(
*
value
,
&
endptr
,
10
);
if
(
errno
||
!
endptr
)
if
(
errno
||
!
endptr
)
return
false
;
return
false
;
*
value
=
endptr
;
*
value
=
endptr
;
return
true
;
return
true
;
...
@@ -744,7 +765,7 @@ static int lxc_container_name_to_pid(const char *lxcname_or_pid,
...
@@ -744,7 +765,7 @@ static int lxc_container_name_to_pid(const char *lxcname_or_pid,
ret
=
kill
(
pid
,
0
);
ret
=
kill
(
pid
,
0
);
if
(
ret
<
0
)
{
if
(
ret
<
0
)
{
SYSERROR
(
"Failed to send signal to pid %d"
,
(
int
)
pid
);
SYSERROR
(
"Failed to send signal to pid %d"
,
(
int
)
pid
);
return
-
EPERM
;
return
-
1
;
}
}
return
pid
;
return
pid
;
...
@@ -760,7 +781,7 @@ int lxc_inherit_namespace(const char *lxcname_or_pid, const char *lxcpath,
...
@@ -760,7 +781,7 @@ int lxc_inherit_namespace(const char *lxcname_or_pid, const char *lxcpath,
if
(
lastslash
)
{
if
(
lastslash
)
{
dup
=
strdup
(
lxcname_or_pid
);
dup
=
strdup
(
lxcname_or_pid
);
if
(
!
dup
)
if
(
!
dup
)
return
-
ENOMEM
;
return
-
1
;
dup
[
lastslash
-
lxcname_or_pid
]
=
'\0'
;
dup
[
lastslash
-
lxcname_or_pid
]
=
'\0'
;
pid
=
lxc_container_name_to_pid
(
lastslash
+
1
,
dup
);
pid
=
lxc_container_name_to_pid
(
lastslash
+
1
,
dup
);
...
@@ -770,11 +791,11 @@ int lxc_inherit_namespace(const char *lxcname_or_pid, const char *lxcpath,
...
@@ -770,11 +791,11 @@ int lxc_inherit_namespace(const char *lxcname_or_pid, const char *lxcpath,
}
}
if
(
pid
<
0
)
if
(
pid
<
0
)
return
-
EINVAL
;
return
-
1
;
fd
=
lxc_preserve_ns
(
pid
,
namespace
);
fd
=
lxc_preserve_ns
(
pid
,
namespace
);
if
(
fd
<
0
)
if
(
fd
<
0
)
return
-
EINVAL
;
return
-
1
;
return
fd
;
return
fd
;
}
}
...
@@ -877,9 +898,8 @@ static int rt_sig_num(const char *signame)
...
@@ -877,9 +898,8 @@ static int rt_sig_num(const char *signame)
{
{
int
rtmax
=
0
,
sig_n
=
0
;
int
rtmax
=
0
,
sig_n
=
0
;
if
(
strncasecmp
(
signame
,
"max-"
,
4
)
==
0
)
{
if
(
strncasecmp
(
signame
,
"max-"
,
4
)
==
0
)
rtmax
=
1
;
rtmax
=
1
;
}
signame
+=
4
;
signame
+=
4
;
if
(
!
isdigit
(
*
signame
))
if
(
!
isdigit
(
*
signame
))
...
@@ -903,11 +923,11 @@ int sig_parse(const char *signame)
...
@@ -903,11 +923,11 @@ int sig_parse(const char *signame)
signame
+=
3
;
signame
+=
3
;
if
(
strncasecmp
(
signame
,
"rt"
,
2
)
==
0
)
if
(
strncasecmp
(
signame
,
"rt"
,
2
)
==
0
)
return
rt_sig_num
(
signame
+
2
);
return
rt_sig_num
(
signame
+
2
);
for
(
n
=
0
;
n
<
sizeof
(
signames
)
/
sizeof
((
signames
)[
0
]);
n
++
)
{
for
(
n
=
0
;
n
<
sizeof
(
signames
)
/
sizeof
((
signames
)[
0
]);
n
++
)
if
(
strcasecmp
(
signames
[
n
].
name
,
signame
)
==
0
)
if
(
strcasecmp
(
signames
[
n
].
name
,
signame
)
==
0
)
return
signames
[
n
].
num
;
return
signames
[
n
].
num
;
}
}
}
return
-
1
;
return
-
1
;
}
}
src/lxc/confile_utils.h
View file @
29c98ddd
...
@@ -81,7 +81,7 @@ extern int set_config_string_item_max(char **conf_item, const char *value,
...
@@ -81,7 +81,7 @@ extern int set_config_string_item_max(char **conf_item, const char *value,
extern
int
set_config_path_item
(
char
**
conf_item
,
const
char
*
value
);
extern
int
set_config_path_item
(
char
**
conf_item
,
const
char
*
value
);
extern
int
config_ip_prefix
(
struct
in_addr
*
addr
);
extern
int
config_ip_prefix
(
struct
in_addr
*
addr
);
extern
int
network_ifname
(
char
*
valuep
,
const
char
*
value
,
size_t
size
);
extern
int
network_ifname
(
char
*
valuep
,
const
char
*
value
,
size_t
size
);
extern
int
rand_complete_hwaddr
(
char
*
hwaddr
);
extern
void
rand_complete_hwaddr
(
char
*
hwaddr
);
extern
bool
lxc_config_net_hwaddr
(
const
char
*
line
);
extern
bool
lxc_config_net_hwaddr
(
const
char
*
line
);
extern
void
update_hwaddr
(
const
char
*
line
);
extern
void
update_hwaddr
(
const
char
*
line
);
extern
bool
new_hwaddr
(
char
*
hwaddr
);
extern
bool
new_hwaddr
(
char
*
hwaddr
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment