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
3910f81f
Unverified
Commit
3910f81f
authored
Dec 04, 2019
by
Christian Brauner
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
commands: use logging return helpers
Signed-off-by:
Christian Brauner
<
christian.brauner@ubuntu.com
>
parent
663287e9
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
53 additions
and
47 deletions
+53
-47
commands.c
src/lxc/commands.c
+40
-47
log.h
src/lxc/log.h
+13
-0
No files found.
src/lxc/commands.c
View file @
3910f81f
...
@@ -131,19 +131,15 @@ static const char *lxc_cmd_str(lxc_cmd_t cmd)
...
@@ -131,19 +131,15 @@ static const char *lxc_cmd_str(lxc_cmd_t cmd)
*/
*/
static
int
lxc_cmd_rsp_recv
(
int
sock
,
struct
lxc_cmd_rr
*
cmd
)
static
int
lxc_cmd_rsp_recv
(
int
sock
,
struct
lxc_cmd_rr
*
cmd
)
{
{
int
ret
,
rspfd
;
__do_close_prot_errno
int
fd_rsp
=
-
EBADF
;
int
ret
;
struct
lxc_cmd_rsp
*
rsp
=
&
cmd
->
rsp
;
struct
lxc_cmd_rsp
*
rsp
=
&
cmd
->
rsp
;
ret
=
lxc_abstract_unix_recv_fds
(
sock
,
&
rspfd
,
1
,
rsp
,
sizeof
(
*
rsp
));
ret
=
lxc_abstract_unix_recv_fds
(
sock
,
&
fd_rsp
,
1
,
rsp
,
sizeof
(
*
rsp
));
if
(
ret
<
0
)
{
if
(
ret
<
0
)
SYSWARN
(
"Failed to receive response for command
\"
%s
\"
"
,
return
log_warn_errno
(
-
1
,
lxc_cmd_str
(
cmd
->
req
.
cmd
));
errno
,
"Failed to receive response for command
\"
%s
\"
"
,
lxc_cmd_str
(
cmd
->
req
.
cmd
));
if
(
errno
==
ECONNRESET
)
return
-
1
;
return
-
1
;
}
TRACE
(
"Command
\"
%s
\"
received response"
,
lxc_cmd_str
(
cmd
->
req
.
cmd
));
TRACE
(
"Command
\"
%s
\"
received response"
,
lxc_cmd_str
(
cmd
->
req
.
cmd
));
if
(
cmd
->
req
.
cmd
==
LXC_CMD_CONSOLE
)
{
if
(
cmd
->
req
.
cmd
==
LXC_CMD_CONSOLE
)
{
...
@@ -156,33 +152,31 @@ static int lxc_cmd_rsp_recv(int sock, struct lxc_cmd_rr *cmd)
...
@@ -156,33 +152,31 @@ static int lxc_cmd_rsp_recv(int sock, struct lxc_cmd_rr *cmd)
return
0
;
return
0
;
rspdata
=
malloc
(
sizeof
(
*
rspdata
));
rspdata
=
malloc
(
sizeof
(
*
rspdata
));
if
(
!
rspdata
)
{
if
(
!
rspdata
)
errno
=
ENOMEM
;
return
log_warn_errno
(
-
1
,
ERROR
(
"Failed to allocate response buffer for command
\"
%s
\"
"
,
ENOMEM
,
"Failed to receive response for command
\"
%s
\"
"
,
lxc_cmd_str
(
cmd
->
req
.
cmd
));
lxc_cmd_str
(
cmd
->
req
.
cmd
));
return
-
1
;
}
rspdata
->
masterfd
=
rspfd
;
rspdata
->
masterfd
=
move_fd
(
fd_rsp
)
;
rspdata
->
ttynum
=
PTR_TO_INT
(
rsp
->
data
);
rspdata
->
ttynum
=
PTR_TO_INT
(
rsp
->
data
);
rsp
->
data
=
rspdata
;
rsp
->
data
=
rspdata
;
}
}
if
(
cmd
->
req
.
cmd
==
LXC_CMD_GET_CGROUP2_FD
)
if
(
cmd
->
req
.
cmd
==
LXC_CMD_GET_CGROUP2_FD
)
{
rsp
->
data
=
INT_TO_PTR
(
rspfd
);
int
cgroup2_fd
=
move_fd
(
fd_rsp
);
rsp
->
data
=
INT_TO_PTR
(
cgroup2_fd
);
if
(
rsp
->
datalen
==
0
)
{
DEBUG
(
"Response data length for command
\"
%s
\"
is 0"
,
lxc_cmd_str
(
cmd
->
req
.
cmd
));
return
ret
;
}
}
if
(
rsp
->
datalen
==
0
)
return
log_debug
(
ret
,
"Response data length for command
\"
%s
\"
is 0"
,
lxc_cmd_str
(
cmd
->
req
.
cmd
));
if
((
rsp
->
datalen
>
LXC_CMD_DATA_MAX
)
&&
if
((
rsp
->
datalen
>
LXC_CMD_DATA_MAX
)
&&
(
cmd
->
req
.
cmd
!=
LXC_CMD_CONSOLE_LOG
))
{
(
cmd
->
req
.
cmd
!=
LXC_CMD_CONSOLE_LOG
))
ERROR
(
"Response data for command
\"
%s
\"
is too long: %d bytes > %d"
,
return
log_error
(
-
1
,
"Response data for command
\"
%s
\"
is too long: %d bytes > %d"
,
lxc_cmd_str
(
cmd
->
req
.
cmd
),
rsp
->
datalen
,
LXC_CMD_DATA_MAX
);
lxc_cmd_str
(
cmd
->
req
.
cmd
),
rsp
->
datalen
,
return
-
1
;
LXC_CMD_DATA_MAX
);
}
if
(
cmd
->
req
.
cmd
==
LXC_CMD_CONSOLE_LOG
)
{
if
(
cmd
->
req
.
cmd
==
LXC_CMD_CONSOLE_LOG
)
{
rsp
->
data
=
malloc
(
rsp
->
datalen
+
1
);
rsp
->
data
=
malloc
(
rsp
->
datalen
+
1
);
...
@@ -190,19 +184,16 @@ static int lxc_cmd_rsp_recv(int sock, struct lxc_cmd_rr *cmd)
...
@@ -190,19 +184,16 @@ static int lxc_cmd_rsp_recv(int sock, struct lxc_cmd_rr *cmd)
}
else
{
}
else
{
rsp
->
data
=
malloc
(
rsp
->
datalen
);
rsp
->
data
=
malloc
(
rsp
->
datalen
);
}
}
if
(
!
rsp
->
data
)
{
if
(
!
rsp
->
data
)
errno
=
ENOMEM
;
return
log_error_errno
(
-
1
,
ERROR
(
"Failed to allocate response buffer for command
\"
%s
\"
"
,
ENOMEM
,
"Failed to allocate response buffer for command
\"
%s
\"
"
,
lxc_cmd_str
(
cmd
->
req
.
cmd
));
lxc_cmd_str
(
cmd
->
req
.
cmd
));
return
-
1
;
}
ret
=
lxc_recv_nointr
(
sock
,
rsp
->
data
,
rsp
->
datalen
,
0
);
ret
=
lxc_recv_nointr
(
sock
,
rsp
->
data
,
rsp
->
datalen
,
0
);
if
(
ret
!=
rsp
->
datalen
)
{
if
(
ret
!=
rsp
->
datalen
)
SYSERROR
(
"Failed to receive response data for command
\"
%s
\"
"
,
return
log_error_errno
(
-
1
,
lxc_cmd_str
(
cmd
->
req
.
cmd
));
errno
,
"Failed to receive response data for command
\"
%s
\"
"
,
return
-
1
;
lxc_cmd_str
(
cmd
->
req
.
cmd
));
}
return
ret
;
return
ret
;
}
}
...
@@ -1270,8 +1261,11 @@ int lxc_cmd_get_cgroup2_fd(const char *name, const char *lxcpath)
...
@@ -1270,8 +1261,11 @@ int lxc_cmd_get_cgroup2_fd(const char *name, const char *lxcpath)
};
};
ret
=
lxc_cmd
(
name
,
&
cmd
,
&
stopped
,
lxcpath
,
NULL
);
ret
=
lxc_cmd
(
name
,
&
cmd
,
&
stopped
,
lxcpath
,
NULL
);
if
(
ret
<=
0
||
cmd
.
rsp
.
ret
<
0
)
if
(
ret
<
0
)
return
error_log_errno
(
errno
,
"Failed to retrieve cgroup2 fd"
);
return
-
1
;
if
(
cmd
.
rsp
.
ret
<
0
)
return
error_log_errno
(
errno
,
"Failed to receive cgroup2 fd"
);
return
PTR_TO_INT
(
cmd
.
rsp
.
data
);
return
PTR_TO_INT
(
cmd
.
rsp
.
data
);
}
}
...
@@ -1326,10 +1320,9 @@ static int lxc_cmd_process(int fd, struct lxc_cmd_req *req,
...
@@ -1326,10 +1320,9 @@ static int lxc_cmd_process(int fd, struct lxc_cmd_req *req,
[
LXC_CMD_GET_CGROUP2_FD
]
=
lxc_cmd_get_cgroup2_fd_callback
,
[
LXC_CMD_GET_CGROUP2_FD
]
=
lxc_cmd_get_cgroup2_fd_callback
,
};
};
if
(
req
->
cmd
>=
LXC_CMD_MAX
)
{
if
(
req
->
cmd
>=
LXC_CMD_MAX
)
ERROR
(
"Undefined command id %d"
,
req
->
cmd
);
return
log_error_errno
(
-
1
,
ENOENT
,
"Undefined command id %d"
,
req
->
cmd
);
return
-
1
;
}
return
cb
[
req
->
cmd
](
fd
,
req
,
handler
,
descr
);
return
cb
[
req
->
cmd
](
fd
,
req
,
handler
,
descr
);
}
}
...
...
src/lxc/log.h
View file @
3910f81f
...
@@ -531,6 +531,19 @@ ATTR_UNUSED static inline void LXC_##LEVEL(struct lxc_log_locinfo* locinfo, \
...
@@ -531,6 +531,19 @@ ATTR_UNUSED static inline void LXC_##LEVEL(struct lxc_log_locinfo* locinfo, \
__ret__; \
__ret__; \
})
})
#define log_warn_errno(__ret__, __errno__, format, ...) \
({ \
errno = __errno__; \
SYSWARN(format, ##__VA_ARGS__); \
__ret__; \
})
#define log_debug(__ret__, format, ...) \
({ \
DEBUG(format, ##__VA_ARGS__); \
__ret__; \
})
extern
int
lxc_log_fd
;
extern
int
lxc_log_fd
;
extern
int
lxc_log_syslog
(
int
facility
);
extern
int
lxc_log_syslog
(
int
facility
);
...
...
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