summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.clang-format190
-rw-r--r--minecctl/mc-commands.c11
-rw-r--r--minecctl/minecctl-commands.h66
-rw-r--r--minecctl/minecctl.c38
-rw-r--r--minecctl/minecctl.h1
-rw-r--r--minecctl/misc-commands.c6
-rw-r--r--minecctl/misc-commands.h1
-rw-r--r--minecctl/misc.c46
-rw-r--r--minecctl/misc.h2
-rw-r--r--minecctl/rcon-commands.c122
-rw-r--r--minecctl/server.c25
-rw-r--r--minecproxy/announce.c31
-rw-r--r--minecproxy/idle.c42
-rw-r--r--minecproxy/igmp.c115
-rw-r--r--minecproxy/main.c105
-rw-r--r--minecproxy/main.h2
-rw-r--r--minecproxy/misc.c124
-rw-r--r--minecproxy/misc.h7
-rw-r--r--minecproxy/ptimer.c59
-rw-r--r--minecproxy/ptimer.h5
-rw-r--r--minecproxy/server-config.c158
-rw-r--r--minecproxy/server-proxy.c185
-rw-r--r--minecproxy/server-proxy.h2
-rw-r--r--minecproxy/server-rcon.c64
-rw-r--r--minecproxy/server.c231
-rw-r--r--minecproxy/server.h5
-rw-r--r--minecproxy/signal-handler.c31
-rw-r--r--minecproxy/systemd.c133
-rw-r--r--minecproxy/uring.c290
-rw-r--r--minecproxy/uring.h15
-rw-r--r--shared/ansi-colors.h14
-rw-r--r--shared/config-parser.c66
-rw-r--r--shared/config-parser.h8
-rw-r--r--shared/debug.h97
-rw-r--r--shared/external.h3
-rw-r--r--shared/list.h202
-rw-r--r--shared/mc-protocol.c71
-rw-r--r--shared/mc-protocol.h1
-rw-r--r--shared/rcon-protocol.c35
-rw-r--r--shared/rcon-protocol.h5
-rw-r--r--shared/server-config-options.h40
-rw-r--r--shared/utils.c56
-rw-r--r--shared/utils.h30
43 files changed, 1408 insertions, 1332 deletions
diff --git a/.clang-format b/.clang-format
new file mode 100644
index 0000000..32ca6ad
--- /dev/null
+++ b/.clang-format
@@ -0,0 +1,190 @@
+#
+# Configuration for clang-format 11.0.
+#
+UseTab: Always
+TabWidth: 8
+IndentWidth: 8
+ContinuationIndentWidth: 8
+ColumnLimit: 80
+
+# C Language specifics
+Language: Cpp
+
+# Align parameters on the open bracket
+# someLongFunction(argument1,
+# argument2);
+AlignAfterOpenBracket: Align
+
+# Don't align consecutive assignments
+# int aaaa = 12;
+# int b = 14;
+AlignConsecutiveAssignments: false
+
+# Don't align consecutive declarations
+# int aaaa = 12;
+# double b = 3.14;
+AlignConsecutiveDeclarations: false
+
+# Align consecutive macros
+# #define SHORT_NAME 42
+# #define LONGER_NAME 0x007f
+# #define EVEN_LONGER_NAME (2)
+# #define foo(x) (x * x)
+# #define bar(y, z) (y + z)
+AlignConsecutiveMacros: true
+
+# Align escaped newlines as far right as possible
+# #define A \
+# int aaaa; \
+# int b; \
+# int dddddddddd;
+AlignEscapedNewlines: Right
+
+# Align operands of binary and ternary expressions
+# int aaa = bbbbbbbbbbb +
+# cccccc;
+AlignOperands: true
+
+# Don't align trailing comments
+# int a; // Comment a
+# int b = 2; // Comment b
+AlignTrailingComments: false
+
+# By default don't allow putting parameters onto the next line
+# myFunction(foo, bar, baz);
+AllowAllParametersOfDeclarationOnNextLine: false
+
+# Don't allow short braced statements to be on a single line
+# if (a) not if (a) return;
+# return;
+AllowShortBlocksOnASingleLine: false
+AllowShortCaseLabelsOnASingleLine: false
+AllowShortFunctionsOnASingleLine: false
+AllowShortIfStatementsOnASingleLine: false
+AllowShortLoopsOnASingleLine: false
+
+# By default don't add a line break after the return type of top-level functions
+# int foo();
+AlwaysBreakAfterReturnType: None
+
+# Pack as many parameters or arguments onto the same line as possible
+# int myFunction(int aaaaaaaaaaaa, int bbbbbbbb,
+# int cccc);
+BinPackArguments: true
+BinPackParameters: true
+
+# Attach braces to surrounding context except break before braces on function
+# definitions.
+# void foo()
+# {
+# if (true) {
+# } else {
+# }
+# };
+BreakBeforeBraces: Linux
+
+# Break after operators
+# int valuve = aaaaaaaaaaaaa +
+# bbbbbb -
+# ccccccccccc;
+BreakBeforeBinaryOperators: None
+BreakBeforeTernaryOperators: false
+
+# Don't break string literals
+BreakStringLiterals: false
+
+# Use the same indentation level as for the switch statement.
+# Switch statement body is always indented one level more than case labels.
+IndentCaseLabels: false
+
+# Don't indent a function definition or declaration if it is wrapped after the
+# type
+IndentWrappedFunctionNames: false
+
+# Align pointer to the right
+# int *a;
+PointerAlignment: Right
+
+# Don't insert a space after a cast
+# x = (int32)y; not x = (int32) y;
+SpaceAfterCStyleCast: false
+
+# Insert spaces before and after assignment operators
+# int a = 5; not int a=5;
+# a += 42; a+=42;
+SpaceBeforeAssignmentOperators: true
+
+# Put a space before opening parentheses only after control statement keywords.
+# void f() {
+# if (true) {
+# f();
+# }
+# }
+SpaceBeforeParens: ControlStatementsExceptForEachMacros
+
+# Don't insert spaces inside empty '()'
+SpaceInEmptyParentheses: false
+
+# The number of spaces before trailing line comments (// - comments).
+# This does not affect trailing block comments (/* - comments).
+SpacesBeforeTrailingComments: 1
+
+# Don't insert spaces in casts
+# x = (int32) y; not x = ( int32 ) y;
+SpacesInCStyleCastParentheses: false
+
+# Don't insert spaces inside container literals
+# var arr = [1, 2, 3]; not var arr = [ 1, 2, 3 ];
+SpacesInContainerLiterals: false
+
+# Don't insert spaces after '(' or before ')'
+# f(arg); not f( arg );
+SpacesInParentheses: false
+
+# Don't insert spaces after '[' or before ']'
+# int a[5]; not int a[ 5 ];
+SpacesInSquareBrackets: false
+
+# Insert a space after '{' and before '}' in struct initializers
+Cpp11BracedListStyle: false
+
+# A list of macros that should be interpreted as foreach loops instead of as
+# function calls. Taken from:
+# git grep -h '^#define [^[:space:]]*for_each[^[:space:]]*(' \
+# | sed "s,^#define \([^[:space:]]*for_each[^[:space:]]*\)(.*$, - '\1'," \
+# | sort | uniq
+ForEachMacros:
+ - 'list_for_each'
+ - 'list_for_each_continue'
+ - 'list_for_each_prev'
+ - 'list_for_each_safe'
+ - 'list_for_each_prev_safe'
+ - 'list_for_each_entry'
+ - 'list_for_each_entry_reverse'
+ - 'list_for_each_entry_continue'
+ - 'list_for_each_entry_continue_reverse'
+ - 'list_for_each_entry_from'
+ - 'list_for_each_entry_from_reverse'
+ - 'list_for_each_entry_safe'
+ - 'list_for_each_entry_safe_continue'
+ - 'list_for_each_entry_safe_from'
+ - 'list_for_each_entry_safe_reverse'
+
+# The maximum number of consecutive empty lines to keep.
+MaxEmptyLinesToKeep: 1
+
+# No empty line at the start of a block.
+KeepEmptyLinesAtTheStartOfBlocks: false
+
+# Penalties
+# This decides what order things should be done if a line is too long
+PenaltyBreakAssignment: 10
+PenaltyBreakBeforeFirstCallParameter: 30
+PenaltyBreakComment: 10
+PenaltyBreakFirstLessLess: 0
+PenaltyBreakString: 10
+PenaltyExcessCharacter: 100
+PenaltyReturnTypeOnItsOwnLine: 60
+
+# Don't sort #include's
+SortIncludes: false
diff --git a/minecctl/mc-commands.c b/minecctl/mc-commands.c
index 0ac20d0..d4d2846 100644
--- a/minecctl/mc-commands.c
+++ b/minecctl/mc-commands.c
@@ -7,8 +7,7 @@
#include "misc.h"
#include "mc-protocol.h"
-bool
-do_mc_pcount(struct cfg *cfg, unsigned *online, unsigned *max)
+bool do_mc_pcount(struct cfg *cfg, unsigned *online, unsigned *max)
{
struct server *server;
struct saddr *saddr;
@@ -24,7 +23,7 @@ do_mc_pcount(struct cfg *cfg, unsigned *online, unsigned *max)
if (fd < 0) {
error("%s: unable to connect", server->name);
return false;
- }
+ }
/* FIXME: connect_any needs to indicate the address it used */
saddr = list_first_entry(&server->mc_addrs, struct saddr, list);
@@ -33,7 +32,8 @@ do_mc_pcount(struct cfg *cfg, unsigned *online, unsigned *max)
goto out;
}
- if (!mc_protocol_create_status_request(buf, sizeof(buf), &plen, saddr)) {
+ if (!mc_protocol_create_status_request(buf, sizeof(buf), &plen,
+ saddr)) {
error("Failed to create req");
goto out;
}
@@ -64,7 +64,7 @@ do_mc_pcount(struct cfg *cfg, unsigned *online, unsigned *max)
break;
}
}
-
+
if (!mc_protocol_parse_status_reply(buf, off, online, max)) {
error("Failed to get player count");
return false;
@@ -74,4 +74,3 @@ out:
close(fd);
return rv;
}
-
diff --git a/minecctl/minecctl-commands.h b/minecctl/minecctl-commands.h
index 444204f..2805a51 100644
--- a/minecctl/minecctl-commands.h
+++ b/minecctl/minecctl-commands.h
@@ -16,35 +16,41 @@ enum commands {
static struct command_list {
const char *name;
enum commands cmd;
-} command_list[] = {
- {
- .name = "list",
- .cmd = CMD_LIST,
- }, {
- .name = "status",
- .cmd = CMD_STATUS,
- }, {
- .name = "ping",
- .cmd = CMD_PING,
- }, {
- .name = "stop",
- .cmd = CMD_STOP,
- }, {
- .name = "stopall",
- .cmd = CMD_STOPALL,
- }, {
- .name = "pcount",
- .cmd = CMD_PCOUNT,
- }, {
- .name = "cmd",
- .cmd = CMD_COMMAND,
- }, {
- .name = "console",
- .cmd = CMD_CONSOLE,
- }, {
- .name = NULL,
- .cmd = CMD_INVALID,
- }
-};
+} command_list[] = { {
+ .name = "list",
+ .cmd = CMD_LIST,
+ },
+ {
+ .name = "status",
+ .cmd = CMD_STATUS,
+ },
+ {
+ .name = "ping",
+ .cmd = CMD_PING,
+ },
+ {
+ .name = "stop",
+ .cmd = CMD_STOP,
+ },
+ {
+ .name = "stopall",
+ .cmd = CMD_STOPALL,
+ },
+ {
+ .name = "pcount",
+ .cmd = CMD_PCOUNT,
+ },
+ {
+ .name = "cmd",
+ .cmd = CMD_COMMAND,
+ },
+ {
+ .name = "console",
+ .cmd = CMD_CONSOLE,
+ },
+ {
+ .name = NULL,
+ .cmd = CMD_INVALID,
+ } };
#endif
diff --git a/minecctl/minecctl.c b/minecctl/minecctl.c
index b93f87b..5ac3942 100644
--- a/minecctl/minecctl.c
+++ b/minecctl/minecctl.c
@@ -22,8 +22,7 @@
#include "config-parser.h"
#include "config.h"
-static void
-dump_config(struct cfg *cfg)
+static void dump_config(struct cfg *cfg)
{
/* FIXME: return unless debugging enabled */
struct server *server;
@@ -44,7 +43,8 @@ dump_config(struct cfg *cfg)
info(" name : %s", server->name);
info(" filename : %s", server->filename);
info(" rcon_password : %s", server->rcon_password);
- info(" file_read : %s", server->file_read ? "yes" : "no");
+ info(" file_read : %s",
+ server->file_read ? "yes" : "no");
list_for_each_entry(saddr, &server->rcon_addrs, list)
info(" * rcon addr : %s", saddr->addrstr);
list_for_each_entry(saddr, &server->mc_addrs, list)
@@ -54,8 +54,7 @@ dump_config(struct cfg *cfg)
info("=============");
}
-_noreturn_ static void
-usage(bool no_error)
+_noreturn_ static void usage(bool no_error)
{
info("Usage: %s [OPTION...] COMMAND\n"
"\n"
@@ -92,8 +91,7 @@ usage(bool no_error)
exit(no_error ? EXIT_FAILURE : EXIT_SUCCESS);
}
-static bool
-str_to_addrs(const char *str, struct list_head *list)
+static bool str_to_addrs(const char *str, struct list_head *list)
{
struct cfg_value value;
char *tmp = NULL;
@@ -124,8 +122,7 @@ out:
return rv;
}
-static bool
-create_server_from_cmdline_args(struct cfg *cfg)
+static bool create_server_from_cmdline_args(struct cfg *cfg)
{
struct server *server;
@@ -167,8 +164,8 @@ error:
return false;
}
-static inline void
-get_optional_server_arg(struct cfg *cfg, char * const **argv, bool more)
+static inline void get_optional_server_arg(struct cfg *cfg, char *const **argv,
+ bool more)
{
if (!cfg->rcon_addrstr) {
if (!**argv) {
@@ -177,7 +174,8 @@ get_optional_server_arg(struct cfg *cfg, char * const **argv, bool more)
}
if (!server_set_default(cfg, **argv)) {
- error("\"%s\" is not a known server or command", **argv);
+ error("\"%s\" is not a known server or command",
+ **argv);
usage(false);
}
@@ -190,8 +188,7 @@ get_optional_server_arg(struct cfg *cfg, char * const **argv, bool more)
}
}
-static void
-parse_command(struct cfg *cfg, char * const *argv)
+static void parse_command(struct cfg *cfg, char *const *argv)
{
enum commands cmd = CMD_INVALID;
@@ -280,8 +277,7 @@ parse_command(struct cfg *cfg, char * const *argv)
}
}
-static void
-parse_cmdline(struct cfg *cfg, int argc, char * const *argv)
+static void parse_cmdline(struct cfg *cfg, int argc, char *const *argv)
{
int c;
char *e;
@@ -299,6 +295,7 @@ parse_cmdline(struct cfg *cfg, int argc, char * const *argv)
while (true) {
int option_index = 0;
+ /* clang-format off */
static struct option long_options[] = {
{ "rcon-password", required_argument, 0, 'p' },
{ "rcon-address", required_argument, 0, 'r' },
@@ -309,9 +306,10 @@ parse_cmdline(struct cfg *cfg, int argc, char * const *argv)
{ "help", no_argument, 0, 'h' },
{ 0, 0, 0, 0 }
};
+ /* clang-format on */
- c = getopt_long(argc, argv, ":p:r:m:c:vfh",
- long_options, &option_index);
+ c = getopt_long(argc, argv, ":p:r:m:c:vfh", long_options,
+ &option_index);
if (c == -1)
break;
@@ -362,8 +360,7 @@ parse_cmdline(struct cfg *cfg, int argc, char * const *argv)
}
}
-int
-main(int argc, char **argv)
+int main(int argc, char **argv)
{
struct cfg cfg = {
.servers = LIST_HEAD_INIT(cfg.servers),
@@ -401,4 +398,3 @@ out:
xfree(cfg.cmdstr);
exit(success ? EXIT_SUCCESS : EXIT_FAILURE);
}
-
diff --git a/minecctl/minecctl.h b/minecctl/minecctl.h
index 60b71b4..259ac52 100644
--- a/minecctl/minecctl.h
+++ b/minecctl/minecctl.h
@@ -16,4 +16,3 @@ struct cfg {
};
#endif
-
diff --git a/minecctl/misc-commands.c b/minecctl/misc-commands.c
index c64a005..52797da 100644
--- a/minecctl/misc-commands.c
+++ b/minecctl/misc-commands.c
@@ -5,8 +5,7 @@
#include "rcon-commands.h"
#include "mc-commands.h"
-bool
-do_list(struct cfg *cfg)
+bool do_list(struct cfg *cfg)
{
struct server *server;
@@ -18,8 +17,7 @@ do_list(struct cfg *cfg)
return true;
}
-bool
-do_pcount(struct cfg *cfg)
+bool do_pcount(struct cfg *cfg)
{
unsigned x, y;
diff --git a/minecctl/misc-commands.h b/minecctl/misc-commands.h
index 8270601..1a4363f 100644
--- a/minecctl/misc-commands.h
+++ b/minecctl/misc-commands.h
@@ -6,4 +6,3 @@ bool do_list(struct cfg *cfg);
bool do_pcount(struct cfg *cfg);
#endif
-
diff --git a/minecctl/misc.c b/minecctl/misc.c
index 72eb03c..8f0761f 100644
--- a/minecctl/misc.c
+++ b/minecctl/misc.c
@@ -11,8 +11,7 @@
bool use_colors = false;
/* FIXME: Can be shared */
-void
-set_use_colors()
+void set_use_colors()
{
int fd;
const char *e;
@@ -37,8 +36,7 @@ set_use_colors()
use_colors = true;
}
-char *
-strv_join(char * const *strv)
+char *strv_join(char *const *strv)
{
size_t len = 0;
char *r, *to;
@@ -61,8 +59,7 @@ strv_join(char * const *strv)
return r;
}
-int
-connect_any(struct list_head *addrs, bool may_fail)
+int connect_any(struct list_head *addrs, bool may_fail)
{
struct saddr *saddr;
bool connected = false;
@@ -78,13 +75,15 @@ connect_any(struct list_head *addrs, bool may_fail)
list_for_each_entry(saddr, addrs, list) {
verbose("Attempting connection to %s", saddr->addrstr);
- sfd = socket(saddr->storage.ss_family, SOCK_STREAM | SOCK_CLOEXEC, 0);
+ sfd = socket(saddr->st.ss_family, SOCK_STREAM | SOCK_CLOEXEC,
+ 0);
if (sfd < 0)
die("socket: %m");
socket_set_low_latency(sfd, true, true, true);
- if (connect(sfd, (struct sockaddr *)&saddr->storage, saddr->addrlen) < 0) {
+ if (connect(sfd, (struct sockaddr *)&saddr->st,
+ saddr->addrlen) < 0) {
close(sfd);
continue;
}
@@ -101,8 +100,7 @@ connect_any(struct list_head *addrs, bool may_fail)
return sfd;
}
-char *
-ask_password()
+char *ask_password()
{
struct termios old, new;
char *password = NULL;
@@ -139,8 +137,7 @@ ask_password()
return password;
}
-void
-free_password(char **password)
+void free_password(char **password)
{
if (!password || !*password)
return;
@@ -150,8 +147,7 @@ free_password(char **password)
*password = NULL;
}
-void
-__debug(_unused_ enum debug_lvl lvl, const char *fmt, ...)
+void __debug(_unused_ enum debug_lvl lvl, const char *fmt, ...)
{
va_list ap;
@@ -170,8 +166,7 @@ __debug(_unused_ enum debug_lvl lvl, const char *fmt, ...)
fprintf(stderr, ANSI_NORMAL);
}
-_noreturn_ void
-__die(const char *fmt, ...)
+_noreturn_ void __die(const char *fmt, ...)
{
va_list ap;
@@ -182,8 +177,7 @@ __die(const char *fmt, ...)
exit(EXIT_FAILURE);
}
-void *
-__zmalloc(const char *fn, int line, size_t size)
+void *__zmalloc(const char *fn, int line, size_t size)
{
void *ptr;
@@ -195,12 +189,12 @@ __zmalloc(const char *fn, int line, size_t size)
return ptr;
}
-char *
-__xstrdup(const char *fn, int line, const char *s)
+char *__xstrdup(const char *fn, int line, const char *s)
{
char *ptr;
- assert_die(!empty_str(fn) && line > 0 && !empty_str(s), "invalid arguments");
+ assert_die(!empty_str(fn) && line > 0 && !empty_str(s),
+ "invalid arguments");
ptr = strdup(s);
if (!ptr)
@@ -208,12 +202,12 @@ __xstrdup(const char *fn, int line, const char *s)
return ptr;
}
-char *
-__xstrndup(const char *fn, int line, const char *s, size_t n)
+char *__xstrndup(const char *fn, int line, const char *s, size_t n)
{
char *ptr;
- assert_die(!empty_str(fn) && line > 0 && !empty_str(s) && n > 0, "invalid arguments");
+ assert_die(!empty_str(fn) && line > 0 && !empty_str(s) && n > 0,
+ "invalid arguments");
ptr = strndup(s, n);
if (ptr)
@@ -221,11 +215,9 @@ __xstrndup(const char *fn, int line, const char *s, size_t n)
return ptr;
}
-void
-__xfree(const char *fn, int line, void *ptr)
+void __xfree(const char *fn, int line, void *ptr)
{
assert_die(!empty_str(fn) && line > 0, "invalid arguments");
free(ptr);
}
-
diff --git a/minecctl/misc.h b/minecctl/misc.h
index 155681e..6abed5e 100644
--- a/minecctl/misc.h
+++ b/minecctl/misc.h
@@ -5,7 +5,7 @@ extern bool use_colors;
void set_use_colors();
-char *strv_join(char * const *strv);
+char *strv_join(char *const *strv);
int connect_any(struct list_head *addrs, bool may_fail);
diff --git a/minecctl/rcon-commands.c b/minecctl/rcon-commands.c
index cf43c5e..b6a216f 100644
--- a/minecctl/rcon-commands.c
+++ b/minecctl/rcon-commands.c
@@ -16,8 +16,7 @@
#include "rcon-protocol.h"
#include "misc.h"
-static void
-send_packet(int sfd, const char *buf, size_t len)
+static void send_packet(int sfd, const char *buf, size_t len)
{
size_t off = 0;
ssize_t r;
@@ -38,8 +37,8 @@ send_packet(int sfd, const char *buf, size_t len)
}
/* Note: msg is null-terminated due to the mc protocol trailer */
-static void
-read_packet(int sfd, char *buf, size_t len, int32_t *id, int32_t *type, const char **msg)
+static void read_packet(int sfd, char *buf, size_t len, int32_t *id,
+ int32_t *type, const char **msg)
{
size_t off = 0;
ssize_t r;
@@ -69,16 +68,16 @@ read_packet(int sfd, char *buf, size_t len, int32_t *id, int32_t *type, const ch
die("Failed to parse response: %s", error);
}
-static void
-send_msg(int sfd, char *buf, size_t len, enum rcon_packet_type type,
- const char *msg, enum rcon_packet_type *rtype, const char **reply)
+static void send_msg(int sfd, char *buf, size_t len, enum rcon_packet_type type,
+ const char *msg, enum rcon_packet_type *rtype,
+ const char **reply)
{
static uint32_t rcon_packet_id = 1;
size_t plen;
int32_t id;
- if (!rcon_protocol_create_packet(buf, len, &plen,
- rcon_packet_id, type, msg))
+ if (!rcon_protocol_create_packet(buf, len, &plen, rcon_packet_id, type,
+ msg))
die("Failed to create rcon packet");
send_packet(sfd, buf, plen);
@@ -102,8 +101,7 @@ send_msg(int sfd, char *buf, size_t len, enum rcon_packet_type type,
rcon_packet_id++;
}
-static int
-rcon_login(struct cfg *cfg, struct server *server)
+static int rcon_login(struct cfg *cfg, struct server *server)
{
char buf[4096];
int32_t rtype;
@@ -121,7 +119,7 @@ rcon_login(struct cfg *cfg, struct server *server)
if (fd < 0) {
error("%s: unable to connect", server->name);
goto error;
- }
+ }
if (!server->rcon_password)
server->rcon_password = ask_password();
@@ -154,21 +152,20 @@ error:
return -1;
}
-static bool
-send_cmd(int sfd, const char *cmd)
+static bool send_cmd(int sfd, const char *cmd)
{
char buf[4096];
int32_t rtype;
const char *reply;
- send_msg(sfd, buf, sizeof(buf), RCON_PACKET_COMMAND, cmd, &rtype, &reply);
+ send_msg(sfd, buf, sizeof(buf), RCON_PACKET_COMMAND, cmd, &rtype,
+ &reply);
if (rtype != RCON_PACKET_RESPONSE) {
die("Invalid return code: %" PRIi32, rtype);
return false;
}
-
if (use_colors)
info("%s%s%s", ANSI_GREY, reply, ANSI_NORMAL);
else
@@ -177,13 +174,12 @@ send_cmd(int sfd, const char *cmd)
return true;
}
-static void
-eat_whitespace(char **pos)
+static void eat_whitespace(char **pos)
{
char *end;
size_t len;
- while(isspace(**pos))
+ while (isspace(**pos))
(*pos)++;
len = strlen(*pos);
@@ -203,24 +199,24 @@ eat_whitespace(char **pos)
#define MCTIME_PER_HOUR 1000
#define MIN_PER_HOUR 60
-static inline unsigned
-mctime_days(unsigned mctime) {
+static inline unsigned mctime_days(unsigned mctime)
+{
return (mctime / MCTIME_PER_DAY);
}
-static inline unsigned
-mctime_hh(unsigned mctime) {
+static inline unsigned mctime_hh(unsigned mctime)
+{
return (mctime % MCTIME_PER_DAY) / MCTIME_PER_HOUR;
}
-static inline unsigned
-mctime_mm(unsigned mctime) {
+static inline unsigned mctime_mm(unsigned mctime)
+{
return ((mctime % MCTIME_PER_HOUR) * MIN_PER_HOUR) / MCTIME_PER_HOUR;
}
-static bool
-get_one_status(int fd, char *buf, size_t len, const char *cmd,
- size_t argc, const char *replyscan, const char **reply, ...)
+static bool get_one_status(int fd, char *buf, size_t len, const char *cmd,
+ size_t argc, const char *replyscan,
+ const char **reply, ...)
{
int32_t rtype;
va_list ap;
@@ -240,8 +236,8 @@ get_one_status(int fd, char *buf, size_t len, const char *cmd,
return false;
}
-bool
-do_status(struct cfg *cfg) {
+bool do_status(struct cfg *cfg)
+{
char buf[4096];
char tbuf[4096];
const char *reply;
@@ -256,17 +252,17 @@ do_status(struct cfg *cfg) {
if (fd < 0)
return false;
- if (get_one_status(fd, buf, sizeof(buf), "seed", 1,
- "Seed : [ %[^]]]", &reply, tbuf))
+ if (get_one_status(fd, buf, sizeof(buf), "seed", 1, "Seed : [ %[^]]]",
+ &reply, tbuf))
info("Seed: %s", tbuf);
-
+
if (get_one_status(fd, buf, sizeof(buf), "difficulty", 1,
"The difficulty is %s", &reply, tbuf))
info("Difficulty: %s", tbuf);
if (get_one_status(fd, buf, sizeof(buf), "list", 2,
- "There are %u of a max %u players online",
- &reply, &cplayers, &maxplayers))
+ "There are %u of a max %u players online", &reply,
+ &cplayers, &maxplayers))
info("Players: %u/%u", cplayers, maxplayers);
if (get_one_status(fd, buf, sizeof(buf), "time query day", 1,
@@ -275,20 +271,23 @@ do_status(struct cfg *cfg) {
if (get_one_status(fd, buf, sizeof(buf), "time query gametime", 1,
"The time is %u", &reply, &gtime))
- info("World age: %ud:%02uh:%02um",
- mctime_days(gtime), mctime_hh(gtime), mctime_mm(gtime));
+ info("World age: %ud:%02uh:%02um", mctime_days(gtime),
+ mctime_hh(gtime), mctime_mm(gtime));
if (get_one_status(fd, buf, sizeof(buf), "time query daytime", 1,
"The time is %u", &reply, &gtime))
info("Current in-game time: %02uh:%02um",
- mctime_hh(gtime + MCTIME_OFFSET), mctime_mm(gtime + MCTIME_OFFSET));
+ mctime_hh(gtime + MCTIME_OFFSET),
+ mctime_mm(gtime + MCTIME_OFFSET));
if (get_one_status(fd, buf, sizeof(buf), "datapack list enabled", 2,
- "There are %u data packs enabled: %[^\n]", &reply, &epacks, tbuf))
+ "There are %u data packs enabled: %[^\n]", &reply,
+ &epacks, tbuf))
info("Enabled data packs (%u): %s", epacks, tbuf);
if (get_one_status(fd, buf, sizeof(buf), "datapack list available", 2,
- "There are %u data packs available : %[^\n]", &reply, &apacks, tbuf))
+ "There are %u data packs available : %[^\n]", &reply,
+ &apacks, tbuf))
info("Available data packs (%u): %s", apacks, tbuf);
else if (streq(reply, "There are no more data packs available"))
info("Available data packs: none");
@@ -308,22 +307,21 @@ do_status(struct cfg *cfg) {
return true;
}
-bool
-do_ping(_unused_ struct cfg *cfg) {
+bool do_ping(_unused_ struct cfg *cfg)
+{
die("Not implemented");
return false;
}
-static bool
-get_player_count(int fd, unsigned *current, unsigned *max)
+static bool get_player_count(int fd, unsigned *current, unsigned *max)
{
char buf[4096];
const char *reply;
unsigned c, m;
if (!get_one_status(fd, buf, sizeof(buf), "list", 2,
- "There are %u of a max %u players online",
- &reply, &c, &m))
+ "There are %u of a max %u players online", &reply,
+ &c, &m))
return false;
if (current)
@@ -335,8 +333,7 @@ get_player_count(int fd, unsigned *current, unsigned *max)
return true;
}
-static bool
-stop_one_server(struct cfg *cfg, struct server *server)
+static bool stop_one_server(struct cfg *cfg, struct server *server)
{
int fd;
bool rv;
@@ -366,16 +363,16 @@ stop_one_server(struct cfg *cfg, struct server *server)
return rv;
}
-bool
-do_stop(struct cfg *cfg) {
+bool do_stop(struct cfg *cfg)
+{
struct server *server;
server = server_get_default(cfg);
return stop_one_server(cfg, server);
}
-bool
-do_stop_all(struct cfg *cfg) {
+bool do_stop_all(struct cfg *cfg)
+{
struct server *server;
list_for_each_entry(server, &cfg->servers, list) {
@@ -386,8 +383,7 @@ do_stop_all(struct cfg *cfg) {
return true;
}
-bool
-do_rcon_pcount(struct cfg *cfg, unsigned *online, unsigned *max)
+bool do_rcon_pcount(struct cfg *cfg, unsigned *online, unsigned *max)
{
struct server *server;
bool rv;
@@ -399,14 +395,13 @@ do_rcon_pcount(struct cfg *cfg, unsigned *online, unsigned *max)
return false;
rv = get_player_count(fd, online, max);
-
+
close(fd);
return rv;
}
-bool
-do_console(struct cfg *cfg)
+bool do_console(struct cfg *cfg)
{
char *prompt;
char *cmd;
@@ -418,8 +413,8 @@ do_console(struct cfg *cfg)
if (fd < 0)
return false;
- prompt = alloca(strlen(program_invocation_short_name) +
- STRLEN(" (") + strlen(server->name) + STRLEN("): ") + 1);
+ prompt = alloca(strlen(program_invocation_short_name) + STRLEN(" (") +
+ strlen(server->name) + STRLEN("): ") + 1);
sprintf(prompt, "%s (%s): ", program_invocation_short_name,
server->name);
@@ -437,8 +432,8 @@ do_console(struct cfg *cfg)
continue;
}
- if (streq(tmp, "q") || streq(tmp, "quit") ||
- streq(tmp, "/q") || streq(tmp, "/quit"))
+ if (streq(tmp, "q") || streq(tmp, "quit") || streq(tmp, "/q") ||
+ streq(tmp, "/quit"))
break;
send_cmd(fd, tmp);
@@ -454,8 +449,8 @@ do_console(struct cfg *cfg)
return true;
}
-bool
-do_command(struct cfg *cfg) {
+bool do_command(struct cfg *cfg)
+{
int fd;
struct server *server;
@@ -466,4 +461,3 @@ do_command(struct cfg *cfg) {
return send_cmd(fd, cfg->cmdstr);
}
-
diff --git a/minecctl/server.c b/minecctl/server.c
index da59c8f..aca69a0 100644
--- a/minecctl/server.c
+++ b/minecctl/server.c
@@ -10,8 +10,7 @@
#include "config-parser.h"
#include "server-config-options.h"
-void
-server_read_config(struct cfg *cfg, struct server *server)
+void server_read_config(struct cfg *cfg, struct server *server)
{
char buf[4096];
size_t off = 0;
@@ -44,7 +43,8 @@ server_read_config(struct cfg *cfg, struct server *server)
off += r;
if (off == sizeof(buf) - 1)
- die("Failed to read %s: file too large", server->filename);
+ die("Failed to read %s: file too large",
+ server->filename);
}
buf[off] = '\0';
@@ -97,8 +97,7 @@ server_read_config(struct cfg *cfg, struct server *server)
verbose("mc server address not found in %s", server->filename);
}
-struct server *
-server_get_default(struct cfg *cfg)
+struct server *server_get_default(struct cfg *cfg)
{
struct server *server;
@@ -111,8 +110,7 @@ server_get_default(struct cfg *cfg)
return server;
}
-bool
-server_set_default(struct cfg *cfg, const char *name)
+bool server_set_default(struct cfg *cfg, const char *name)
{
struct server *server;
@@ -128,8 +126,7 @@ server_set_default(struct cfg *cfg, const char *name)
return false;
}
-void
-server_load_all_known(struct cfg *cfg)
+void server_load_all_known(struct cfg *cfg)
{
struct dirent *dent;
DIR *dir;
@@ -161,8 +158,7 @@ server_load_all_known(struct cfg *cfg)
closedir(dir);
}
-void
-server_free_all(struct cfg *cfg)
+void server_free_all(struct cfg *cfg)
{
struct server *server, *tmp;
@@ -170,8 +166,7 @@ server_free_all(struct cfg *cfg)
server_free(server);
}
-void
-server_free(struct server *server)
+void server_free(struct server *server)
{
struct saddr *saddr, *tmp;
@@ -192,8 +187,7 @@ server_free(struct server *server)
xfree(server);
}
-struct server *
-server_new()
+struct server *server_new()
{
struct server *server;
@@ -204,4 +198,3 @@ server_new()
return server;
}
-
diff --git a/minecproxy/announce.c b/minecproxy/announce.c
index 13ef423..78a7ccd 100644
--- a/minecproxy/announce.c
+++ b/minecproxy/announce.c
@@ -18,8 +18,7 @@ struct announce {
int mcast_fd;
};
-static void
-announce_cb(struct ptimer_task *ptask)
+static void announce_cb(struct ptimer_task *ptask)
{
struct announce *announce = container_of(ptask, struct announce, ptask);
struct server *server;
@@ -32,28 +31,25 @@ announce_cb(struct ptimer_task *ptask)
server_announce(server, announce->mcast_fd);
}
-static void
-announce_free(struct uring_task *task)
+static void announce_free(struct uring_task *task)
{
struct announce *announce = container_of(task, struct announce, task);
assert_return(task);
- debug(DBG_ANN, "task %p, announce 0x%p, mcast_fd: %i",
- task, announce, announce->mcast_fd);
+ debug(DBG_ANN, "task %p, announce 0x%p, mcast_fd: %i", task, announce,
+ announce->mcast_fd);
close(announce->mcast_fd);
xfree(announce);
}
-void
-announce_refdump()
+void announce_refdump()
{
assert_return_silent(cfg->announce);
uring_task_refdump(&cfg->announce->task);
}
-void
-announce_delete()
+void announce_delete()
{
assert_return_silent(cfg->announce);
@@ -63,8 +59,7 @@ announce_delete()
cfg->announce = NULL;
}
-void
-announce_stop()
+void announce_stop()
{
struct announce *announce = cfg->announce;
@@ -73,8 +68,7 @@ announce_stop()
ptimer_del_task(&announce->ptask);
}
-void
-announce_start(unsigned duration)
+void announce_start(unsigned duration)
{
struct announce *announce = cfg->announce;
unsigned times;
@@ -91,12 +85,11 @@ announce_start(unsigned duration)
ptimer_add_task(&announce->ptask);
}
-void
-announce_init()
+void announce_init()
{
struct announce *announce;
int sfd;
-
+
assert_return(!cfg->announce);
assert_return_silent(cfg->announce_interval > 0);
@@ -108,9 +101,9 @@ announce_init()
if (sfd < 0)
die("socket: %m");
- uring_task_init(&announce->task, "announce", uring_parent(), announce_free);
+ uring_task_init(&announce->task, "announce", uring_parent(),
+ announce_free);
ptask_init(&announce->ptask, cfg->announce_interval, 0, announce_cb);
announce->mcast_fd = sfd;
cfg->announce = announce;
}
-
diff --git a/minecproxy/idle.c b/minecproxy/idle.c
index 70d8099..ec9e2da 100644
--- a/minecproxy/idle.c
+++ b/minecproxy/idle.c
@@ -18,8 +18,8 @@ struct idle {
struct uring_task task;
};
-static int
-idle_check_handshake_complete(struct uring_task *task, _unused_ int res)
+static int idle_check_handshake_complete(struct uring_task *task,
+ _unused_ int res)
{
int r;
@@ -31,8 +31,7 @@ idle_check_handshake_complete(struct uring_task *task, _unused_ int res)
return r;
}
-static void
-idle_check_handshake_reply(struct uring_task *task, int res)
+static void idle_check_handshake_reply(struct uring_task *task, int res)
{
struct server *server = container_of(task, struct server, idle_task);
unsigned online, max;
@@ -46,8 +45,7 @@ idle_check_handshake_reply(struct uring_task *task, int res)
goto out;
if (mc_protocol_parse_status_reply(server->idle_buf.buf,
- server->idle_buf.len,
- &online, &max))
+ server->idle_buf.len, &online, &max))
player_count = online;
else
error("failed to parse reply");
@@ -58,8 +56,7 @@ out:
return;
}
-static void
-idle_check_handshake_sent(struct uring_task *task, int res)
+static void idle_check_handshake_sent(struct uring_task *task, int res)
{
assert_return(task);
assert_task_alive(DBG_IDLE, task);
@@ -70,20 +67,17 @@ idle_check_handshake_sent(struct uring_task *task, int res)
return;
}
- uring_tbuf_read_until(task,
- idle_check_handshake_complete,
+ uring_tbuf_read_until(task, idle_check_handshake_complete,
idle_check_handshake_reply);
}
-void
-idle_check_get_player_count(struct server *server, struct connection *conn)
+void idle_check_get_player_count(struct server *server, struct connection *conn)
{
assert_return(server && conn && server->idle_task.priv);
- if (!mc_protocol_create_status_request(server->idle_buf.buf,
- sizeof(server->idle_buf.buf),
- &server->idle_buf.len,
- &conn->remote)) {
+ if (!mc_protocol_create_status_request(
+ server->idle_buf.buf, sizeof(server->idle_buf.buf),
+ &server->idle_buf.len, &conn->remote)) {
error("failed to create mc request");
/* FIXME: is this enough? */
return;
@@ -94,8 +88,7 @@ idle_check_get_player_count(struct server *server, struct connection *conn)
uring_tbuf_write(&server->idle_task, idle_check_handshake_sent);
}
-static void
-idle_cb(struct ptimer_task *ptask)
+static void idle_cb(struct ptimer_task *ptask)
{
struct idle *idle = container_of(ptask, struct idle, ptask);
struct server *server;
@@ -109,8 +102,7 @@ idle_cb(struct ptimer_task *ptask)
server_idle_check(server);
}
-static void
-idle_free(struct uring_task *task)
+static void idle_free(struct uring_task *task)
{
struct idle *idle = container_of(task, struct idle, task);
@@ -119,16 +111,14 @@ idle_free(struct uring_task *task)
xfree(idle);
}
-void
-idle_refdump()
+void idle_refdump()
{
assert_return_silent(cfg->idle);
uring_task_refdump(&cfg->idle->task);
}
-void
-idle_delete()
+void idle_delete()
{
assert_return(cfg->idle);
@@ -138,8 +128,7 @@ idle_delete()
cfg->idle = NULL;
}
-void
-idle_init()
+void idle_init()
{
struct idle *idle;
@@ -154,4 +143,3 @@ idle_init()
ptimer_add_task(&idle->ptask);
cfg->idle = idle;
}
-
diff --git a/minecproxy/igmp.c b/minecproxy/igmp.c
index f1d380d..f3579f4 100644
--- a/minecproxy/igmp.c
+++ b/minecproxy/igmp.c
@@ -345,7 +345,8 @@ igmp_parse(struct igmp *igmp)
body_len -= sizeof(*record);
pos += sizeof(*record);
- if (body_len < record->nsrcs * sizeof(uint32_t) + record->auxlen) {
+ if (body_len <
+ (record->nsrcs * sizeof(uint32_t) + record->auxlen)) {
error("IGMPv3 too short");
break;
}
@@ -364,10 +365,12 @@ igmp_parse(struct igmp *igmp)
}
/* Yes, EXCL, not INCL, see RFC3376 */
+ /* clang-format off */
if ((htonl(record->addr) == cinet_addr(224,0,2,60)) &&
((record->type == IGMP_V3_REC_MODE_IS_EXCL) ||
(record->type == IGMP_V3_REC_MODE_CH_EXCL)))
igmp_match();
+ /* clang-format on */
body_len -= record->auxlen;
pos += record->auxlen;
@@ -409,7 +412,7 @@ igmp_read_cb(struct uring_task *task, int res)
task->tbuf->len = res;
- if (task->saddr.storage.ss_family == AF_PACKET ||
+ if (task->saddr.st.ss_family == AF_PACKET ||
task->saddr.ll.sll_protocol == htons(ETH_P_IP))
igmp_parse(igmp);
else
@@ -450,46 +453,74 @@ void
igmp_init()
{
static const struct sock_filter filter[] = {
- BPF_STMT(BPF_LD + BPF_W + BPF_LEN, 0), /* A <- packet length */
- BPF_JUMP(BPF_JMP + BPF_JGE + BPF_K, sizeof(struct iphdr), 1, 0), /* A < sizeof(iphdr) */
- BPF_STMT(BPF_RET + BPF_K, 0), /* drop packet */
-
- BPF_STMT(BPF_LD + BPF_B + BPF_ABS, 0 /* iphdr[0] */), /* A <- version + ihl */
- BPF_STMT(BPF_ALU + BPF_RSH + BPF_K, 4), /* A <- A >> 4 (version) */
- BPF_JUMP(BPF_JMP + BPF_JEQ + BPF_K, 0x04, 1, 0), /* A != 4 */
- BPF_STMT(BPF_RET + BPF_K, 0), /* drop packet */
-
- BPF_STMT(BPF_LD + BPF_B + BPF_ABS, offsetof(struct iphdr, protocol)), /* A <- ip protocol */
- BPF_JUMP(BPF_JMP + BPF_JEQ + BPF_K, IPPROTO_IGMP, 1, 0), /* A != IPPROTO_IGMP */
- BPF_STMT(BPF_RET + BPF_K, 0), /* drop packet */
-
- BPF_STMT(BPF_LD + BPF_W + BPF_ABS, offsetof(struct iphdr, daddr)), /* A <- ip dst addr */
- BPF_JUMP(BPF_JMP + BPF_JEQ + BPF_K, chtobe32(cinet_addr(224,0,2,60)), 2, 0), /* A != 224.0.2.60 */
- //BPF_JUMP(BPF_JMP + BPF_JEQ + BPF_K, 0xe000023c, 2, 0), /* A != 224.0.2.60 */
- BPF_JUMP(BPF_JMP + BPF_JEQ + BPF_K, chtobe32(cinet_addr(224,0,0,22)), 1, 0), /* A != 224.0.0.22 */
- //BPF_JUMP(BPF_JMP + BPF_JEQ + BPF_K, 0xe0000016, 1, 0), /* A != 224.0.0.22 */
- BPF_STMT(BPF_RET + BPF_K, 0), /* drop packet */
-
- BPF_STMT(BPF_LDX + BPF_B + BPF_MSH, 0 /* iphdr[0] */), /* X <- pkt->ihl * 4 */
- BPF_STMT(BPF_LD + BPF_IMM, 20), /* A <- 20 */
- BPF_JUMP(BPF_JMP + BPF_JGT + BPF_X, 0, 0, 1), /* A > X */
- BPF_STMT(BPF_RET + BPF_K, 0), /* drop packet */
-
- BPF_STMT(BPF_LD + BPF_H + BPF_ABS, offsetof(struct iphdr, tot_len)), /* A <- ip tot_len */
- BPF_JUMP(BPF_JMP + BPF_JGT + BPF_X, 0, 1, 0), /* A <= ip->ihl * 4 */
- BPF_STMT(BPF_RET + BPF_K, 0), /* drop packet */
- BPF_STMT(BPF_ALU + BPF_SUB + BPF_X, 0), /* A <- A - X (bodylen) */
- BPF_JUMP(BPF_JMP + BPF_JGE + BPF_K, 8, 1, 0), /* A < 8 */
- BPF_STMT(BPF_RET + BPF_K, 0), /* drop packet */
-
- BPF_STMT(BPF_LD + BPF_H + BPF_ABS, offsetof(struct iphdr, tot_len)), /* A <- ip->tot_len */
- BPF_STMT(BPF_MISC + BPF_TAX, 0), /* X <- A */
- BPF_STMT(BPF_LD + BPF_W + BPF_LEN, 0), /* A <- packet length */
- BPF_JUMP(BPF_JMP + BPF_JEQ + BPF_X, 0, 1, 0), /* A != ip->tot_len */
- BPF_STMT(BPF_RET + BPF_K, 0), /* drop packet */
-
- BPF_STMT(BPF_RET + BPF_K, (uint32_t) -1), /* accept packet */
- };
+ /* A <- packet length */
+ BPF_STMT(BPF_LD + BPF_W + BPF_LEN, 0),
+ /* A < sizeof(iphdr) */
+ BPF_JUMP(BPF_JMP + BPF_JGE + BPF_K, sizeof(struct iphdr), 1, 0),
+ /* drop packet */
+ BPF_STMT(BPF_RET + BPF_K, 0),
+
+ /* A <- version + ihl */
+ BPF_STMT(BPF_LD + BPF_B + BPF_ABS, 0 /* iphdr[0] */),
+ /* A <- A >> 4 (version) */
+ BPF_STMT(BPF_ALU + BPF_RSH + BPF_K, 4),
+ /* A != 4 */
+ BPF_JUMP(BPF_JMP + BPF_JEQ + BPF_K, 0x04, 1, 0),
+ /* drop packet */
+ BPF_STMT(BPF_RET + BPF_K, 0),
+
+ /* A <- ip protocol */
+ BPF_STMT(BPF_LD + BPF_B + BPF_ABS, offsetof(struct iphdr, protocol)),
+ /* A != IPPROTO_IGMP */
+ BPF_JUMP(BPF_JMP + BPF_JEQ + BPF_K, IPPROTO_IGMP, 1, 0),
+ /* drop packet */
+ BPF_STMT(BPF_RET + BPF_K, 0),
+
+ /* A <- ip dst addr */
+ BPF_STMT(BPF_LD + BPF_W + BPF_ABS, offsetof(struct iphdr, daddr)),
+ /* A != 224.0.2.60 */
+ BPF_JUMP(BPF_JMP + BPF_JEQ + BPF_K, chtobe32(cinet_addr(224,0,2,60)), 2, 0),
+ /* A != 224.0.0.22 */
+ BPF_JUMP(BPF_JMP + BPF_JEQ + BPF_K, chtobe32(cinet_addr(224,0,0,22)), 1, 0),
+ /* drop packet */
+ BPF_STMT(BPF_RET + BPF_K, 0),
+
+ /* X <- pkt->ihl * 4 */
+ BPF_STMT(BPF_LDX + BPF_B + BPF_MSH, 0 /* iphdr[0] */),
+ /* A <- 20 */
+ BPF_STMT(BPF_LD + BPF_IMM, 20),
+ /* A > X */
+ BPF_JUMP(BPF_JMP + BPF_JGT + BPF_X, 0, 0, 1),
+ /* drop packet */
+ BPF_STMT(BPF_RET + BPF_K, 0),
+
+ /* A <- ip tot_len */
+ BPF_STMT(BPF_LD + BPF_H + BPF_ABS, offsetof(struct iphdr, tot_len)),
+ /* A <= ip->ihl * 4 */
+ BPF_JUMP(BPF_JMP + BPF_JGT + BPF_X, 0, 1, 0),
+ /* drop packet */
+ BPF_STMT(BPF_RET + BPF_K, 0),
+ /* A <- A - X (bodylen) */
+ BPF_STMT(BPF_ALU + BPF_SUB + BPF_X, 0),
+ /* A < 8 */
+ BPF_JUMP(BPF_JMP + BPF_JGE + BPF_K, 8, 1, 0),
+ /* drop packet */
+ BPF_STMT(BPF_RET + BPF_K, 0),
+
+ /* A <- ip->tot_len */
+ BPF_STMT(BPF_LD + BPF_H + BPF_ABS, offsetof(struct iphdr, tot_len)),
+ /* X <- A */
+ BPF_STMT(BPF_MISC + BPF_TAX, 0),
+ /* A <- packet length */
+ BPF_STMT(BPF_LD + BPF_W + BPF_LEN, 0),
+ /* A != ip->tot_len */
+ BPF_JUMP(BPF_JMP + BPF_JEQ + BPF_X, 0, 1, 0),
+ /* drop packet */
+ BPF_STMT(BPF_RET + BPF_K, 0),
+
+ /* accept packet */
+ BPF_STMT(BPF_RET + BPF_K, (uint32_t) -1),
+ };
static const struct sock_fprog fprog = {
.len = ARRAY_SIZE(filter),
.filter = (struct sock_filter*) filter,
diff --git a/minecproxy/main.c b/minecproxy/main.c
index f5e6c88..b5a195b 100644
--- a/minecproxy/main.c
+++ b/minecproxy/main.c
@@ -38,8 +38,7 @@ static bool daemonize = false;
static FILE *log_file = NULL;
static const char *log_file_path = NULL;
-static void
-msg(enum debug_lvl lvl, const char *fmt, va_list ap)
+static void msg(enum debug_lvl lvl, const char *fmt, va_list ap)
{
static bool first = true;
static bool use_colors = false;
@@ -136,8 +135,7 @@ msg(enum debug_lvl lvl, const char *fmt, va_list ap)
fprintf(stderr, ANSI_NORMAL);
}
-void
-__debug(enum debug_lvl lvl, const char *fmt, ...)
+void __debug(enum debug_lvl lvl, const char *fmt, ...)
{
va_list ap;
@@ -148,8 +146,7 @@ __debug(enum debug_lvl lvl, const char *fmt, ...)
va_end(ap);
}
-_noreturn_ void
-__die(const char *fmt, ...)
+_noreturn_ void __die(const char *fmt, ...)
{
va_list ap;
@@ -164,8 +161,7 @@ __die(const char *fmt, ...)
exit(EXIT_FAILURE);
}
-static void
-cfg_free(struct uring_task *task)
+static void cfg_free(struct uring_task *task)
{
struct cfg *xcfg = container_of(task, struct cfg, task);
@@ -198,51 +194,60 @@ struct cfg_key_value_map mcfg_key_map[] = {
.key_name = "igmp",
.key_value = MCFG_KEY_IGMP,
.value_type = CFG_VAL_TYPE_BOOL,
- }, {
+ },
+ {
.key_name = "igmp_iface",
.key_value = MCFG_KEY_IGMP_IFACE,
.value_type = CFG_VAL_TYPE_STRING,
- }, {
+ },
+ {
.key_name = "announce_interval",
.key_value = MCFG_KEY_ANN_INTERVAL,
.value_type = CFG_VAL_TYPE_UINT16,
- }, {
+ },
+ {
.key_name = "proxy_connection_interval",
.key_value = MCFG_KEY_PROXY_CONN_INTERVAL,
.value_type = CFG_VAL_TYPE_UINT16,
- }, {
+ },
+ {
.key_name = "proxy_connection_attempts",
.key_value = MCFG_KEY_PROXY_CONN_ATTEMPTS,
.value_type = CFG_VAL_TYPE_UINT16,
- }, {
+ },
+ {
.key_name = "socket_defer",
.key_value = MCFG_KEY_SOCKET_DEFER,
.value_type = CFG_VAL_TYPE_BOOL,
- }, {
+ },
+ {
.key_name = "socket_freebind",
.key_value = MCFG_KEY_SOCKET_FREEBIND,
.value_type = CFG_VAL_TYPE_BOOL,
- }, {
+ },
+ {
.key_name = "socket_keepalive",
.key_value = MCFG_KEY_SOCKET_KEEPALIVE,
.value_type = CFG_VAL_TYPE_BOOL,
- }, {
+ },
+ {
.key_name = "socket_iptos",
.key_value = MCFG_KEY_SOCKET_IPTOS,
.value_type = CFG_VAL_TYPE_BOOL,
- }, {
+ },
+ {
.key_name = "socket_nodelay",
.key_value = MCFG_KEY_SOCKET_NODELAY,
.value_type = CFG_VAL_TYPE_BOOL,
- }, {
+ },
+ {
.key_name = NULL,
.key_value = MCFG_KEY_INVALID,
.value_type = CFG_VAL_TYPE_INVALID,
}
};
-static void
-cfg_read()
+static void cfg_read()
{
FILE *cfgfile;
const char *path;
@@ -297,8 +302,8 @@ cfg_read()
const char *keyname;
struct cfg_value value;
- if (!config_parse_line(path, &pos, mcfg_key_map,
- &key, &keyname, &value, false))
+ if (!config_parse_line(path, &pos, mcfg_key_map, &key, &keyname,
+ &value, false))
break;
if (key == MCFG_KEY_INVALID)
@@ -307,7 +312,6 @@ cfg_read()
debug(DBG_CFG, "main cfg: key %s", keyname);
switch (key) {
-
case MCFG_KEY_IGMP:
cfg->do_igmp = value.boolean;
break;
@@ -358,6 +362,7 @@ cfg_read()
}
}
+/* clang-format off */
const struct {
const char *name;
unsigned val;
@@ -409,9 +414,9 @@ const struct {
.val = 0,
}
};
+/* clang-format on */
-_noreturn_ static void
-usage(bool invalid)
+_noreturn_ static void usage(bool invalid)
{
if (invalid)
info("Invalid option(s)");
@@ -434,8 +439,7 @@ usage(bool invalid)
exit(invalid ? EXIT_FAILURE : EXIT_SUCCESS);
}
-static void
-cfg_init(int argc, char **argv)
+static void cfg_init(int argc, char **argv)
{
int c;
unsigned i;
@@ -463,6 +467,7 @@ cfg_init(int argc, char **argv)
while (true) {
int option_index = 0;
+ /* clang-format off */
static struct option long_options[] = {
{ "cfgdir", required_argument, 0, 'c' },
{ "cfgfile", required_argument, 0, 'C' },
@@ -474,9 +479,10 @@ cfg_init(int argc, char **argv)
{ "debug", required_argument, 0, 'd' },
{ 0, 0, 0, 0 }
};
+ /* clang-format on */
- c = getopt_long(argc, argv, ":c:C:u:Dl:hvd:",
- long_options, &option_index);
+ c = getopt_long(argc, argv, ":c:C:u:Dl:hvd:", long_options,
+ &option_index);
if (c == -1)
break;
@@ -512,12 +518,12 @@ cfg_init(int argc, char **argv)
if (errno == ESRCH)
die("failed to find user %s", optarg);
else
- die("failed to find user %s (%m)", optarg);
+ die("failed to find user %s (%m)",
+ optarg);
}
debug(DBG_CFG, "asked to execute with uid %ji gid %ji",
- (intmax_t)pwd->pw_uid,
- (intmax_t)pwd->pw_gid);
+ (intmax_t)pwd->pw_uid, (intmax_t)pwd->pw_gid);
cfg->uid = pwd->pw_uid;
cfg->gid = pwd->pw_gid;
break;
@@ -531,12 +537,14 @@ cfg_init(int argc, char **argv)
info("Debug categories:");
info(" * all");
for (i = 0; debug_category_str[i].name; i++)
- info(" * %s", debug_category_str[i].name);
+ info(" * %s",
+ debug_category_str[i].name);
exit(EXIT_FAILURE);
}
for (i = 0; debug_category_str[i].name; i++) {
- if (strcaseeq(optarg, debug_category_str[i].name))
+ if (strcaseeq(optarg,
+ debug_category_str[i].name))
break;
}
@@ -553,29 +561,25 @@ cfg_init(int argc, char **argv)
default:
usage(true);
}
-
}
if (optind < argc)
usage(true);
}
-static void
-cfg_apply()
+static void cfg_apply()
{
if (cfg->uid == 0 || cfg->gid == 0)
/* This catches both -u root and running as root without -u */
die("Execution as root is not supported (use -u <someuser>)");
capng_clear(CAPNG_SELECT_BOTH);
- if (capng_updatev(CAPNG_ADD,
- CAPNG_EFFECTIVE | CAPNG_PERMITTED,
+ if (capng_updatev(CAPNG_ADD, CAPNG_EFFECTIVE | CAPNG_PERMITTED,
CAP_NET_RAW, CAP_NET_BIND_SERVICE, -1))
die("capng_updatev failed");
if (geteuid() != cfg->uid) {
- if (capng_change_id(cfg->uid,
- cfg->gid,
+ if (capng_change_id(cfg->uid, cfg->gid,
CAPNG_DROP_SUPP_GRP | CAPNG_CLEAR_BOUNDING))
die("capng_change_id failed");
} else {
@@ -614,8 +618,7 @@ cfg_apply()
}
}
-void
-dump_tree()
+void dump_tree()
{
struct server *server;
@@ -639,8 +642,7 @@ dump_tree()
info("\n\n");
}
-int
-main(int argc, char **argv)
+int main(int argc, char **argv)
{
struct server *server;
unsigned server_count;
@@ -679,8 +681,7 @@ main(int argc, char **argv)
/* Drop CAP_NET_RAW (if we have it), only used for igmp */
capng_clear(CAPNG_SELECT_BOTH);
- if (capng_update(CAPNG_ADD,
- CAPNG_EFFECTIVE | CAPNG_PERMITTED,
+ if (capng_update(CAPNG_ADD, CAPNG_EFFECTIVE | CAPNG_PERMITTED,
CAP_NET_BIND_SERVICE))
die("capng_update failed");
@@ -708,14 +709,14 @@ main(int argc, char **argv)
list_for_each_entry(server, &cfg->servers, list)
server_count++;
- sd_notifyf(0, "READY=1\n"
+ sd_notifyf(0,
+ "READY=1\n"
"STATUS=Running, %u server configurations loaded\n"
"MAINPID=%lu",
- server_count,
- (unsigned long)getpid());
+ server_count, (unsigned long)getpid());
- info("mcproxy (%s) started, %u server configurations loaded",
- VERSION, server_count);
+ info("mcproxy (%s) started, %u server configurations loaded", VERSION,
+ server_count);
uring_event_loop();
diff --git a/minecproxy/main.h b/minecproxy/main.h
index 8c8add0..c46169a 100644
--- a/minecproxy/main.h
+++ b/minecproxy/main.h
@@ -62,7 +62,7 @@ struct uring_task {
utask_cb_t cb;
/* returns: 0 = not complete; < 0 = error; > 0 = complete */
- rutask_cb_t is_complete_cb;
+ rutask_cb_t is_complete_cb;
/* called once tbuf processing is done */
utask_cb_t final_cb;
diff --git a/minecproxy/misc.c b/minecproxy/misc.c
index 152de1a..e3872c5 100644
--- a/minecproxy/misc.c
+++ b/minecproxy/misc.c
@@ -31,12 +31,14 @@ struct allocation {
struct list_head list;
};
-static void
-add_allocation(const char *allocfn, const char *callerfn, int line, void *ptr, size_t size)
+static void add_allocation(const char *allocfn, const char *callerfn, int line,
+ void *ptr, size_t size)
{
struct allocation *a;
- assert_die(!empty_str(allocfn) && !empty_str(callerfn) && line > 0 && ptr && size > 0, "invalid arguments");
+ assert_die(!empty_str(allocfn) && !empty_str(callerfn) && line > 0 &&
+ ptr && size > 0,
+ "invalid arguments");
a = malloc(sizeof(*a));
if (!a)
@@ -49,12 +51,11 @@ add_allocation(const char *allocfn, const char *callerfn, int line, void *ptr, s
list_add(&a->list, &malloc_list);
total_malloc_count++;
malloc_count++;
- debug(DBG_MALLOC, "called from %s:%i - %s(%zu) = %p (%p)",
- callerfn, line, allocfn, size, ptr, a);
+ debug(DBG_MALLOC, "called from %s:%i - %s(%zu) = %p (%p)", callerfn,
+ line, allocfn, size, ptr, a);
}
-void *
-__zmalloc(const char *fn, int line, size_t size)
+void *__zmalloc(const char *fn, int line, size_t size)
{
void *ptr;
@@ -66,12 +67,12 @@ __zmalloc(const char *fn, int line, size_t size)
return ptr;
}
-char *
-__xstrdup(const char *fn, int line, const char *s)
+char *__xstrdup(const char *fn, int line, const char *s)
{
char *ptr;
- assert_die(!empty_str(fn) && line > 0 && !empty_str(s), "invalid arguments");
+ assert_die(!empty_str(fn) && line > 0 && !empty_str(s),
+ "invalid arguments");
ptr = strdup(s);
if (ptr)
@@ -79,12 +80,12 @@ __xstrdup(const char *fn, int line, const char *s)
return ptr;
}
-char *
-__xstrndup(const char *fn, int line, const char *s, size_t n)
+char *__xstrndup(const char *fn, int line, const char *s, size_t n)
{
char *ptr;
- assert_die(!empty_str(fn) && line > 0 && !empty_str(s) && n > 0, "invalid arguments");
+ assert_die(!empty_str(fn) && line > 0 && !empty_str(s) && n > 0,
+ "invalid arguments");
ptr = strndup(s, n);
if (ptr)
@@ -92,8 +93,7 @@ __xstrndup(const char *fn, int line, const char *s, size_t n)
return ptr;
}
-void
-__xfree(const char *fn, int line, void *ptr)
+void __xfree(const char *fn, int line, void *ptr)
{
struct allocation *a, *tmp;
unsigned delete_count = 0;
@@ -121,8 +121,7 @@ __xfree(const char *fn, int line, void *ptr)
}
}
-void
-debug_resource_usage()
+void debug_resource_usage()
{
struct allocation *a;
DIR *dir;
@@ -131,11 +130,12 @@ debug_resource_usage()
ssize_t r;
unsigned file_count = 0;
- debug(DBG_MALLOC, "Still malloced %i (total %u)",
- malloc_count, total_malloc_count);
+ debug(DBG_MALLOC, "Still malloced %i (total %u)", malloc_count,
+ total_malloc_count);
list_for_each_entry(a, &malloc_list, list) {
- debug(DBG_MALLOC, "* Lost allocation - %s:%i - ptr: %p, size: %zu",
+ debug(DBG_MALLOC,
+ "* Lost allocation - %s:%i - ptr: %p, size: %zu",
a->callerfn, a->line, a->ptr, a->size);
}
@@ -152,7 +152,8 @@ debug_resource_usage()
r = readlinkat(dirfd(dir), dent->d_name, buf, sizeof(buf));
if (r < 0) {
- debug(DBG_MALLOC, "Failed to readlink %s", dent->d_name);
+ debug(DBG_MALLOC, "Failed to readlink %s",
+ dent->d_name);
continue;
}
buf[r] = '\0';
@@ -168,21 +169,19 @@ debug_resource_usage()
cqe_count, sqe_count);
}
-void
-connection_set_local(struct connection *conn, int fd)
+void connection_set_local(struct connection *conn, int fd)
{
assert_return(conn && fd >= 0);
- conn->local.addrlen = sizeof(conn->local.storage);
- if (getsockname(fd, (struct sockaddr *)&conn->local.storage,
+ conn->local.addrlen = sizeof(conn->local.st);
+ if (getsockname(fd, (struct sockaddr *)&conn->local.st,
&conn->local.addrlen) < 0)
sprintf(conn->local.addrstr, "<unknown>");
else
saddr_set_addrstr(&conn->local);
}
-void
-connection_set_remote(struct connection *conn, struct saddr *remote)
+void connection_set_remote(struct connection *conn, struct saddr *remote)
{
assert_return(conn && remote);
@@ -192,8 +191,7 @@ connection_set_remote(struct connection *conn, struct saddr *remote)
static void connect_next(struct uring_task *task, struct connection *conn);
-static void
-connect_cb(struct uring_task *task, int res)
+static void connect_cb(struct uring_task *task, int res)
{
struct connection *conn;
@@ -201,8 +199,8 @@ connect_cb(struct uring_task *task, int res)
conn = task->priv;
if (res < 0) {
- debug(DBG_SRV, "%s: connection to %s failed",
- task->name, conn->remote.addrstr);
+ debug(DBG_SRV, "%s: connection to %s failed", task->name,
+ conn->remote.addrstr);
uring_task_close_fd(task);
connect_next(task, conn);
return;
@@ -210,66 +208,63 @@ connect_cb(struct uring_task *task, int res)
connection_set_local(conn, task->fd);
- debug(DBG_SRV, "%s: connection established %s -> %s",
- task->name, conn->local.addrstr, conn->remote.addrstr);
+ debug(DBG_SRV, "%s: connection established %s -> %s", task->name,
+ conn->local.addrstr, conn->remote.addrstr);
conn->cb(conn, true);
}
-static void
-connect_next(struct uring_task *task, struct connection *conn)
+static void connect_next(struct uring_task *task, struct connection *conn)
{
- struct saddr *remote, *tmp;
- int sfd;
- unsigned i;
+ struct saddr *remote, *tmp;
+ int sfd;
+ unsigned i;
assert_return(task && conn && conn->cb);
again:
assert_task_alive_or(DBG_UR, task, goto out);
i = 0;
- remote = NULL;
- list_for_each_entry(tmp, conn->addrs, list) {
- if (i == conn->next_addr) {
- remote = tmp;
- break;
- }
- i++;
- }
-
- if (!remote) {
+ remote = NULL;
+ list_for_each_entry(tmp, conn->addrs, list) {
+ if (i == conn->next_addr) {
+ remote = tmp;
+ break;
+ }
+ i++;
+ }
+
+ if (!remote) {
debug(DBG_SRV, "%s: no more remote addresses to attempt",
task->name);
goto out;
- }
+ }
conn->next_addr++;
connection_set_remote(conn, remote);
- debug(DBG_SRV, "%s: attempting to connect to %s",
- task->name, conn->remote.addrstr);
+ debug(DBG_SRV, "%s: attempting to connect to %s", task->name,
+ conn->remote.addrstr);
- sfd = socket(conn->remote.storage.ss_family, SOCK_STREAM | SOCK_CLOEXEC, 0);
- if (sfd < 0) {
- debug(DBG_SRV, "socket: %m");
- goto again;
- }
+ sfd = socket(conn->remote.st.ss_family, SOCK_STREAM | SOCK_CLOEXEC, 0);
+ if (sfd < 0) {
+ debug(DBG_SRV, "socket: %m");
+ goto again;
+ }
- socket_set_low_latency(sfd, cfg->socket_keepalive,
- cfg->socket_iptos, cfg->socket_nodelay);
+ socket_set_low_latency(sfd, cfg->socket_keepalive, cfg->socket_iptos,
+ cfg->socket_nodelay);
task->priv = conn;
- uring_task_set_fd(task, sfd);
- uring_connect(task, &conn->remote, connect_cb);
+ uring_task_set_fd(task, sfd);
+ uring_connect(task, &conn->remote, connect_cb);
return;
out:
conn->cb(conn, false);
}
-void
-connect_any(struct uring_task *task,
- struct list_head *addrs, struct connection *conn,
- connection_cb_t cb)
+void connect_any(struct uring_task *task, struct list_head *addrs,
+ struct connection *conn, connection_cb_t cb)
{
assert_return(task && addrs && conn && cb);
@@ -278,4 +273,3 @@ connect_any(struct uring_task *task,
conn->cb = cb;
connect_next(task, conn);
}
-
diff --git a/minecproxy/misc.h b/minecproxy/misc.h
index 6627913..70b84c7 100644
--- a/minecproxy/misc.h
+++ b/minecproxy/misc.h
@@ -13,7 +13,7 @@ void debug_resource_usage();
struct connection;
-typedef void(*connection_cb_t)(struct connection *, bool);
+typedef void (*connection_cb_t)(struct connection *, bool);
struct connection {
struct saddr remote;
@@ -29,8 +29,7 @@ void connection_set_local(struct connection *conn, int fd);
void connection_set_remote(struct connection *conn, struct saddr *remote);
-void connect_any(struct uring_task *task,
- struct list_head *addrs, struct connection *conn,
- connection_cb_t cb);
+void connect_any(struct uring_task *task, struct list_head *addrs,
+ struct connection *conn, connection_cb_t cb);
#endif
diff --git a/minecproxy/ptimer.c b/minecproxy/ptimer.c
index 845fbfa..6ed405d 100644
--- a/minecproxy/ptimer.c
+++ b/minecproxy/ptimer.c
@@ -16,18 +16,11 @@ struct ptimer {
struct list_head ptasks;
};
-static void
-ptimer_set(unsigned value, unsigned interval)
+static void ptimer_set(unsigned value, unsigned interval)
{
struct itimerspec tspec = {
- .it_interval = {
- .tv_sec = interval,
- .tv_nsec = 0
- },
- .it_value = {
- .tv_sec = value,
- .tv_nsec = 0
- }
+ .it_interval = { .tv_sec = interval, .tv_nsec = 0 },
+ .it_value = { .tv_sec = value, .tv_nsec = 0 }
};
assert_return(cfg->ptimer && cfg->ptimer->task.fd >= 0);
@@ -36,16 +29,14 @@ ptimer_set(unsigned value, unsigned interval)
error("timerfd_settime: %m");
}
-static unsigned
-gcd(unsigned a, unsigned b)
+static unsigned gcd(unsigned a, unsigned b)
{
if (a == 0)
return b;
return gcd(b % a, a);
}
-static unsigned
-array_gcd(unsigned arr[], unsigned n)
+static unsigned array_gcd(unsigned arr[], unsigned n)
{
unsigned result = arr[0];
@@ -55,8 +46,7 @@ array_gcd(unsigned arr[], unsigned n)
return result;
}
-static void
-ptimer_tick(struct ptimer *ptimer)
+static void ptimer_tick(struct ptimer *ptimer)
{
time_t now = time(NULL);
unsigned diff = (unsigned)(now - ptimer->previous_time);
@@ -69,8 +59,8 @@ ptimer_tick(struct ptimer *ptimer)
continue;
}
- debug(DBG_TIMER, "triggering ptask %p (times %u)",
- ptask, ptask->times);
+ debug(DBG_TIMER, "triggering ptask %p (times %u)", ptask,
+ ptask->times);
ptask->cb(ptask);
ptask->remain = ptask->interval;
@@ -88,8 +78,7 @@ ptimer_tick(struct ptimer *ptimer)
ptimer->previous_time = now;
}
-static void
-ptimer_reconfig(struct ptimer *ptimer)
+static void ptimer_reconfig(struct ptimer *ptimer)
{
struct ptimer_task *ptask;
unsigned i = 0;
@@ -116,8 +105,7 @@ ptimer_reconfig(struct ptimer *ptimer)
ptimer_set(lowest, interval);
}
-void
-ptimer_del_task(struct ptimer_task *ptask)
+void ptimer_del_task(struct ptimer_task *ptask)
{
struct ptimer *ptimer = cfg->ptimer;
@@ -133,8 +121,7 @@ ptimer_del_task(struct ptimer_task *ptask)
uring_task_put(&ptimer->task);
}
-void
-ptimer_add_task(struct ptimer_task *ptask)
+void ptimer_add_task(struct ptimer_task *ptask)
{
struct ptimer *ptimer = cfg->ptimer;
@@ -150,16 +137,14 @@ ptimer_add_task(struct ptimer_task *ptask)
ptimer_reconfig(ptimer);
}
-void
-ptimer_refdump()
+void ptimer_refdump()
{
assert_return(cfg->ptimer);
uring_task_refdump(&cfg->ptimer->task);
}
-static void
-ptimer_free(struct uring_task *task)
+static void ptimer_free(struct uring_task *task)
{
struct ptimer *ptimer = container_of(task, struct ptimer, task);
@@ -170,8 +155,7 @@ ptimer_free(struct uring_task *task)
cfg->ptimer = NULL;
}
-void
-ptimer_delete()
+void ptimer_delete()
{
assert_return(cfg->ptimer);
@@ -179,8 +163,7 @@ ptimer_delete()
uring_task_destroy(&cfg->ptimer->task);
}
-static void
-ptimer_cb(struct uring_task *task, int res)
+static void ptimer_cb(struct uring_task *task, int res)
{
struct ptimer *ptimer = container_of(task, struct ptimer, task);
@@ -193,15 +176,15 @@ ptimer_cb(struct uring_task *task, int res)
}
ptimer_tick(ptimer);
- uring_read(&ptimer->task, &ptimer->value, sizeof(ptimer->value), ptimer_cb);
+ uring_read(&ptimer->task, &ptimer->value, sizeof(ptimer->value),
+ ptimer_cb);
}
-void
-ptimer_init()
+void ptimer_init()
{
struct ptimer *ptimer;
int tfd;
-
+
assert_return(!cfg->ptimer);
ptimer = zmalloc(sizeof(*ptimer));
@@ -218,6 +201,6 @@ ptimer_init()
uring_task_init(&ptimer->task, "ptimer", uring_parent(), ptimer_free);
uring_task_set_fd(&ptimer->task, tfd);
cfg->ptimer = ptimer;
- uring_read(&ptimer->task, &ptimer->value, sizeof(ptimer->value), ptimer_cb);
+ uring_read(&ptimer->task, &ptimer->value, sizeof(ptimer->value),
+ ptimer_cb);
}
-
diff --git a/minecproxy/ptimer.h b/minecproxy/ptimer.h
index 0b53590..3481ba4 100644
--- a/minecproxy/ptimer.h
+++ b/minecproxy/ptimer.h
@@ -10,9 +10,8 @@ struct ptimer_task {
struct list_head list;
};
-static inline void
-ptask_init(struct ptimer_task *ptask, unsigned interval,
- unsigned times, void(*cb)(struct ptimer_task *))
+static inline void ptask_init(struct ptimer_task *ptask, unsigned interval,
+ unsigned times, void (*cb)(struct ptimer_task *))
{
ptask->interval = interval;
ptask->times = times;
diff --git a/minecproxy/server-config.c b/minecproxy/server-config.c
index 92990d3..71463ee 100644
--- a/minecproxy/server-config.c
+++ b/minecproxy/server-config.c
@@ -16,8 +16,8 @@
#include "server-config.h"
#include "server-config-options.h"
-static void
-scfg_dns_cb(struct dns_async *dns, bool (*server_cb)(struct server *, struct saddr *))
+static void scfg_dns_cb(struct dns_async *dns,
+ bool (*server_cb)(struct server *, struct saddr *))
{
struct server *server;
struct sockaddr_in *in4;
@@ -29,8 +29,9 @@ scfg_dns_cb(struct dns_async *dns, bool (*server_cb)(struct server *, struct sad
assert_return(dns && dns->priv && server_cb);
server = dns->priv;
- debug(DBG_DNS, "called, dns: %p, name: %s, server: %p, server->name: %s",
- dns, dns->name, server, server->name);
+ debug(DBG_DNS,
+ "called, dns: %p, name: %s, server: %p, server->name: %s", dns,
+ dns->name, server, server->name);
r = gai_error(&dns->gcb);
if (r == EAI_INPROGRESS) {
@@ -41,8 +42,8 @@ scfg_dns_cb(struct dns_async *dns, bool (*server_cb)(struct server *, struct sad
/* The server must be in the process of going away */
goto out;
} else if (r < 0) {
- error("DNS lookup of %s:%s failed: %s",
- dns->name, dns->port, gai_strerror(r));
+ error("DNS lookup of %s:%s failed: %s", dns->name, dns->port,
+ gai_strerror(r));
goto out;
}
@@ -51,14 +52,16 @@ scfg_dns_cb(struct dns_async *dns, bool (*server_cb)(struct server *, struct sad
for (ai = results; ai; ai = ai->ai_next) {
saddr = zmalloc(sizeof(*saddr));
if (!saddr) {
- error("DNS lookup of %s:%s failed: %m", dns->name, dns->port);
+ error("DNS lookup of %s:%s failed: %m", dns->name,
+ dns->port);
goto out;
}
switch (ai->ai_family) {
case AF_INET:
in4 = (struct sockaddr_in *)ai->ai_addr;
- saddr_set_ipv4(saddr, in4->sin_addr.s_addr, in4->sin_port);
+ saddr_set_ipv4(saddr, in4->sin_addr.s_addr,
+ in4->sin_port);
server_cb(server, saddr);
break;
@@ -84,34 +87,30 @@ out:
server_commit(server);
}
-static void
-scfg_local_dns_cb(struct dns_async *dns)
+static void scfg_local_dns_cb(struct dns_async *dns)
{
assert_return(dns);
scfg_dns_cb(dns, server_add_local);
}
-static void
-scfg_remote_dns_cb(struct dns_async *dns)
+static void scfg_remote_dns_cb(struct dns_async *dns)
{
assert_return(dns);
scfg_dns_cb(dns, server_add_remote);
}
-static void
-scfg_rcon_dns_cb(struct dns_async *dns)
+static void scfg_rcon_dns_cb(struct dns_async *dns)
{
assert_return(dns);
scfg_dns_cb(dns, server_add_rcon);
}
-static bool
-handle_dns(struct server *server, const char *type,
- struct cfg_value *value, dns_cb_t *async_cb,
- bool (*sync_cb)(struct server *, struct saddr *))
+static bool handle_dns(struct server *server, const char *type,
+ struct cfg_value *value, dns_cb_t *async_cb,
+ bool (*sync_cb)(struct server *, struct saddr *))
{
struct saddr *saddr, *tmp;
struct dns_async *dns;
@@ -129,8 +128,8 @@ handle_dns(struct server *server, const char *type,
return true;
case CFG_VAL_TYPE_ASYNC_ADDRS:
- debug(DBG_DNS, "%s: doing async lookup of DNS record: %p",
- type, value->dns_async);
+ debug(DBG_DNS, "%s: doing async lookup of DNS record: %p", type,
+ value->dns_async);
dns = value->dns_async;
dns->cb = async_cb;
@@ -144,8 +143,7 @@ handle_dns(struct server *server, const char *type,
}
}
-static void
-scfg_parse(struct server *server)
+static void scfg_parse(struct server *server)
{
char *pos;
@@ -163,8 +161,8 @@ scfg_parse(struct server *server)
const char *keyname;
struct cfg_value value;
- if (!config_parse_line(server->name, &pos, scfg_key_map,
- &key, &keyname, &value, true))
+ if (!config_parse_line(server->name, &pos, scfg_key_map, &key,
+ &keyname, &value, true))
break;
if (key == SCFG_KEY_INVALID)
@@ -173,13 +171,13 @@ scfg_parse(struct server *server)
debug(DBG_CFG, "%s: key %s", server->name, keyname);
switch (key) {
-
case SCFG_KEY_TYPE:
if (streq(value.str, "proxy")) {
if (!server_set_type(server, SERVER_TYPE_PROXY))
return;
} else if (streq(value.str, "announce")) {
- if (!server_set_type(server, SERVER_TYPE_ANNOUNCE))
+ if (!server_set_type(server,
+ SERVER_TYPE_ANNOUNCE))
return;
}
break;
@@ -213,23 +211,29 @@ scfg_parse(struct server *server)
case SCFG_KEY_STOP_METHOD:
if (streq(value.str, "exec")) {
- if (server_set_stop_method(server, SERVER_STOP_METHOD_EXEC))
+ if (server_set_stop_method(
+ server, SERVER_STOP_METHOD_EXEC))
break;
} else if (streq(value.str, "rcon")) {
- if (server_set_stop_method(server, SERVER_STOP_METHOD_RCON))
+ if (server_set_stop_method(
+ server, SERVER_STOP_METHOD_RCON))
break;
} else if (streq(value.str, "systemd")) {
- if (server_set_stop_method(server, SERVER_STOP_METHOD_SYSTEMD))
+ if (server_set_stop_method(
+ server, SERVER_STOP_METHOD_SYSTEMD))
break;
}
return;
case SCFG_KEY_START_METHOD:
if (streq(value.str, "exec")) {
- if (server_set_start_method(server, SERVER_START_METHOD_EXEC))
+ if (server_set_start_method(
+ server, SERVER_START_METHOD_EXEC))
break;
} else if (streq(value.str, "systemd")) {
- if (server_set_start_method(server, SERVER_START_METHOD_SYSTEMD))
+ if (server_set_start_method(
+ server,
+ SERVER_START_METHOD_SYSTEMD))
break;
}
return;
@@ -267,8 +271,7 @@ scfg_parse(struct server *server)
}
}
-static void
-scfg_read_cb(struct uring_task *task, int res)
+static void scfg_read_cb(struct uring_task *task, int res)
{
struct server *server = container_of(task, struct server, task);
@@ -276,8 +279,8 @@ scfg_read_cb(struct uring_task *task, int res)
assert_task_alive(DBG_CFG, task);
if (res <= 0) {
- error("error reading config file for %s: %s",
- server->name, strerror(-res));
+ error("error reading config file for %s: %s", server->name,
+ strerror(-res));
server_delete(server);
}
@@ -287,8 +290,7 @@ scfg_read_cb(struct uring_task *task, int res)
server_commit(server);
}
-static void
-scfg_open_cb(struct uring_task *task, int res)
+static void scfg_open_cb(struct uring_task *task, int res)
{
struct server *server = container_of(task, struct server, task);
@@ -311,12 +313,10 @@ struct server_cfg_monitor {
char buf[4096] _alignas_(struct inotify_event);
};
-static void
-scfgm_free(struct uring_task *task)
+static void scfgm_free(struct uring_task *task)
{
- struct server_cfg_monitor *scfgm = container_of(task,
- struct server_cfg_monitor,
- task);
+ struct server_cfg_monitor *scfgm =
+ container_of(task, struct server_cfg_monitor, task);
assert_return(task);
@@ -325,8 +325,7 @@ scfgm_free(struct uring_task *task)
cfg->server_cfg_monitor = NULL;
}
-static void
-inotify_event_dump(const struct inotify_event *event)
+static void inotify_event_dump(const struct inotify_event *event)
{
assert_return(event);
@@ -338,42 +337,40 @@ inotify_event_dump(const struct inotify_event *event)
debug(DBG_CFG, " * Mask : %" PRIu32, event->mask);
if (event->mask & IN_ACCESS)
debug(DBG_CFG, "\tIN_ACCESS");
- else if(event->mask & IN_MODIFY)
+ else if (event->mask & IN_MODIFY)
debug(DBG_CFG, "\tIN_MODIFY");
- else if(event->mask & IN_ATTRIB)
+ else if (event->mask & IN_ATTRIB)
debug(DBG_CFG, "\tIN_ATTRIB");
- else if(event->mask & IN_CLOSE_WRITE)
+ else if (event->mask & IN_CLOSE_WRITE)
debug(DBG_CFG, "\tIN_CLOSE_WRITE");
- else if(event->mask & IN_CLOSE_NOWRITE)
+ else if (event->mask & IN_CLOSE_NOWRITE)
debug(DBG_CFG, "\tIN_CLOSE_NOWRITE");
- else if(event->mask & IN_OPEN)
+ else if (event->mask & IN_OPEN)
debug(DBG_CFG, "\tIN_OPEN");
- else if(event->mask & IN_MOVED_FROM)
+ else if (event->mask & IN_MOVED_FROM)
debug(DBG_CFG, "\tIN_MOVED_FROM");
- else if(event->mask & IN_MOVED_TO)
+ else if (event->mask & IN_MOVED_TO)
debug(DBG_CFG, "\tIN_MOVED_TO");
- else if(event->mask & IN_CREATE)
+ else if (event->mask & IN_CREATE)
debug(DBG_CFG, "\tIN_CREATE");
- else if(event->mask & IN_DELETE)
+ else if (event->mask & IN_DELETE)
debug(DBG_CFG, "\tIN_DELETE");
- else if(event->mask & IN_DELETE_SELF)
+ else if (event->mask & IN_DELETE_SELF)
debug(DBG_CFG, "\tIN_DELETE_SELF");
- else if(event->mask & IN_MOVE_SELF)
+ else if (event->mask & IN_MOVE_SELF)
debug(DBG_CFG, "\tIN_MOVE_SELF");
- else if(event->mask & IN_UNMOUNT)
+ else if (event->mask & IN_UNMOUNT)
debug(DBG_CFG, "\tIN_UNMOUNT");
- else if(event->mask & IN_Q_OVERFLOW)
+ else if (event->mask & IN_Q_OVERFLOW)
debug(DBG_CFG, "\tIN_Q_OVERFLOW");
- else if(event->mask & IN_IGNORED)
+ else if (event->mask & IN_IGNORED)
debug(DBG_CFG, "\tIN_IGNORED");
}
-static void
-inotify_cb(struct uring_task *task, int res)
+static void inotify_cb(struct uring_task *task, int res)
{
- struct server_cfg_monitor *scfgm = container_of(task,
- struct server_cfg_monitor,
- task);
+ struct server_cfg_monitor *scfgm =
+ container_of(task, struct server_cfg_monitor, task);
const struct inotify_event *event;
char *ptr;
struct server *server;
@@ -386,13 +383,15 @@ inotify_cb(struct uring_task *task, int res)
return;
}
- for (ptr = scfgm->buf; ptr < scfgm->buf + res; ptr += sizeof(struct inotify_event) + event->len) {
+ for (ptr = scfgm->buf; ptr < scfgm->buf + res;
+ ptr += sizeof(struct inotify_event) + event->len) {
event = (const struct inotify_event *)ptr;
if (debug_enabled(DBG_CFG))
inotify_event_dump(event);
- if (event->mask & (IN_IGNORED | IN_MOVE_SELF | IN_DELETE_SELF | IN_UNMOUNT))
+ if (event->mask &
+ (IN_IGNORED | IN_MOVE_SELF | IN_DELETE_SELF | IN_UNMOUNT))
die("configuration directory gone, exiting");
if (event->mask & IN_Q_OVERFLOW) {
@@ -405,9 +404,11 @@ inotify_cb(struct uring_task *task, int res)
if (event->mask & (IN_MOVED_FROM | IN_DELETE))
server_delete_by_name(event->name);
- else if (event->mask & (IN_MOVED_TO | IN_CREATE | IN_CLOSE_WRITE)) {
+ else if (event->mask &
+ (IN_MOVED_TO | IN_CREATE | IN_CLOSE_WRITE)) {
server = server_new(event->name);
- verbose("New server config file detected: %s", server->name);
+ verbose("New server config file detected: %s",
+ server->name);
uring_openat(&server->task, server->name, scfg_open_cb);
} else
error("inotify: unknown event: 0x%08x", event->mask);
@@ -416,16 +417,14 @@ inotify_cb(struct uring_task *task, int res)
uring_read(&scfgm->task, scfgm->buf, sizeof(scfgm->buf), inotify_cb);
}
-void
-server_cfg_monitor_refdump()
+void server_cfg_monitor_refdump()
{
assert_return_silent(cfg->server_cfg_monitor);
uring_task_refdump(&cfg->server_cfg_monitor->task);
}
-void
-server_cfg_monitor_delete()
+void server_cfg_monitor_delete()
{
assert_return(cfg->server_cfg_monitor);
@@ -434,8 +433,7 @@ server_cfg_monitor_delete()
cfg->server_cfg_monitor = NULL;
}
-void
-server_cfg_monitor_init()
+void server_cfg_monitor_init()
{
int ifd;
int iwd;
@@ -455,15 +453,16 @@ server_cfg_monitor_init()
die("inotify_init1: %m");
/* ln = IN_CREATE, cp/vi/mv = IN_CREATE, IN_OPEN, IN_CLOSE_WRITE */
- iwd = inotify_add_watch(ifd, ".",
- IN_CLOSE_WRITE | IN_DELETE | IN_CREATE |
- IN_DELETE_SELF | IN_MOVE_SELF | IN_MOVED_TO |
- IN_MOVED_FROM | IN_DONT_FOLLOW |
- IN_EXCL_UNLINK | IN_ONLYDIR );
+ iwd = inotify_add_watch(
+ ifd, ".",
+ IN_CLOSE_WRITE | IN_DELETE | IN_CREATE | IN_DELETE_SELF |
+ IN_MOVE_SELF | IN_MOVED_TO | IN_MOVED_FROM |
+ IN_DONT_FOLLOW | IN_EXCL_UNLINK | IN_ONLYDIR);
if (iwd < 0)
die("inotify_add_watch: %m");
- uring_task_init(&scfgm->task, "server-config-monitor", uring_parent(), scfgm_free);
+ uring_task_init(&scfgm->task, "server-config-monitor", uring_parent(),
+ scfgm_free);
uring_task_set_fd(&scfgm->task, ifd);
cfg->server_cfg_monitor = scfgm;
uring_read(&scfgm->task, scfgm->buf, sizeof(scfgm->buf), inotify_cb);
@@ -483,4 +482,3 @@ server_cfg_monitor_init()
closedir(dir);
}
-
diff --git a/minecproxy/server-proxy.c b/minecproxy/server-proxy.c
index 087773d..b80a220 100644
--- a/minecproxy/server-proxy.c
+++ b/minecproxy/server-proxy.c
@@ -13,8 +13,7 @@
#include "server.h"
#include "server-proxy.h"
-static void
-format_bytes(char *buf, size_t len, uint64_t val)
+static void format_bytes(char *buf, size_t len, uint64_t val)
{
uint64_t tmp;
const char *suffix = "B";
@@ -24,11 +23,11 @@ format_bytes(char *buf, size_t len, uint64_t val)
tmp = val * 10;
if (val > 1152921504606846976ULL) {
tmp = val / 115292150460684697ULL;
- suffix= "EiB";
+ suffix = "EiB";
} else if (val > 1125899906842624ULL) {
tmp /= 1125899906842624ULL;
suffix = "PiB";
- } else if (val > 1099511627776ULL) {
+ } else if (val > 1099511627776ULL) {
tmp /= 1099511627776ULL;
suffix = "TiB";
} else if (val > 1073741824ULL) {
@@ -45,8 +44,7 @@ format_bytes(char *buf, size_t len, uint64_t val)
snprintf(buf, len, "%lu.%lu %s", tmp / 10, tmp % 10, suffix);
}
-static void
-format_time(char *buf, size_t len, time_t diff)
+static void format_time(char *buf, size_t len, time_t diff)
{
unsigned hh, mm, ss;
@@ -61,62 +59,60 @@ format_time(char *buf, size_t len, time_t diff)
snprintf(buf, len, "%02u:%02u:%02u", hh, mm, ss);
}
-static void
-proxy_free(struct uring_task *task)
+static void proxy_free(struct uring_task *task)
{
- struct server_proxy *proxy = container_of(task, struct server_proxy, task);
+ struct server_proxy *proxy =
+ container_of(task, struct server_proxy, task);
char cts[100];
char stc[100];
char duration[100];
assert_return(task);
- debug(DBG_PROXY, "server: %s, src: %s, dst: %s",
- proxy->server->name,
+ debug(DBG_PROXY, "server: %s, src: %s, dst: %s", proxy->server->name,
proxy->client_conn.remote.addrstr,
proxy->server_conn.remote.addrstr);
if (proxy->begin > 0) {
- format_time(duration, sizeof(duration), time(NULL) - proxy->begin);
+ format_time(duration, sizeof(duration),
+ time(NULL) - proxy->begin);
format_bytes(cts, sizeof(cts), proxy->client_bytes);
format_bytes(stc, sizeof(stc), proxy->server_bytes);
info("%s: proxy connection %s -> %s closed "
"(CtS: %s, StC: %s), duration %s",
- proxy->server->name,
- proxy->client_conn.remote.addrstr,
- proxy->server_conn.remote.addrstr,
- cts, stc, duration);
+ proxy->server->name, proxy->client_conn.remote.addrstr,
+ proxy->server_conn.remote.addrstr, cts, stc, duration);
}
list_del(&proxy->list);
xfree(proxy);
}
-static void
-proxy_client_free(struct uring_task *task)
+static void proxy_client_free(struct uring_task *task)
{
- struct server_proxy *proxy = container_of(task, struct server_proxy, clienttask);
+ struct server_proxy *proxy =
+ container_of(task, struct server_proxy, clienttask);
assert_return(task);
debug(DBG_PROXY, "%s: client connection closed", proxy->server->name);
}
-static void
-proxy_server_free(struct uring_task *task)
+static void proxy_server_free(struct uring_task *task)
{
- struct server_proxy *proxy = container_of(task, struct server_proxy, servertask);
+ struct server_proxy *proxy =
+ container_of(task, struct server_proxy, servertask);
assert_return(task);
debug(DBG_PROXY, "%s: server connection closed", proxy->server->name);
}
-void
-proxy_delete(struct server_proxy *proxy)
+void proxy_delete(struct server_proxy *proxy)
{
- debug(DBG_PROXY, "%s: shutting down proxy %p", proxy->server->name, proxy);
+ debug(DBG_PROXY, "%s: shutting down proxy %p", proxy->server->name,
+ proxy);
assert_return(proxy);
@@ -141,10 +137,10 @@ proxy_delete(struct server_proxy *proxy)
*/
static void proxy_client_read(struct uring_task *task, int res);
-static void
-proxy_client_written(struct uring_task *task, int res)
+static void proxy_client_written(struct uring_task *task, int res)
{
- struct server_proxy *proxy = container_of(task, struct server_proxy, clienttask);
+ struct server_proxy *proxy =
+ container_of(task, struct server_proxy, clienttask);
assert_return(task);
assert_task_alive(DBG_PROXY, task);
@@ -160,10 +156,10 @@ proxy_client_written(struct uring_task *task, int res)
uring_tbuf_read(task, proxy_client_read);
}
-static void
-proxy_client_read(struct uring_task *task, int res)
+static void proxy_client_read(struct uring_task *task, int res)
{
- struct server_proxy *proxy = container_of(task, struct server_proxy, clienttask);
+ struct server_proxy *proxy =
+ container_of(task, struct server_proxy, clienttask);
assert_return(task);
assert_task_alive(DBG_PROXY, task);
@@ -180,10 +176,10 @@ proxy_client_read(struct uring_task *task, int res)
static void proxy_server_read(struct uring_task *task, int res);
-static void
-proxy_server_written(struct uring_task *task, int res)
+static void proxy_server_written(struct uring_task *task, int res)
{
- struct server_proxy *proxy = container_of(task, struct server_proxy, servertask);
+ struct server_proxy *proxy =
+ container_of(task, struct server_proxy, servertask);
assert_return(task);
assert_task_alive(DBG_PROXY, task);
@@ -199,10 +195,10 @@ proxy_server_written(struct uring_task *task, int res)
uring_tbuf_read(&proxy->servertask, proxy_server_read);
}
-static void
-proxy_server_read(struct uring_task *task, int res)
+static void proxy_server_read(struct uring_task *task, int res)
{
- struct server_proxy *proxy = container_of(task, struct server_proxy, servertask);
+ struct server_proxy *proxy =
+ container_of(task, struct server_proxy, servertask);
assert_return(task);
assert_task_alive(DBG_PROXY, task);
@@ -222,10 +218,10 @@ proxy_server_read(struct uring_task *task, int res)
*/
static void proxy_client_spliced_in(struct uring_task *task, int res);
-static void
-proxy_client_spliced_out(struct uring_task *task, int res)
+static void proxy_client_spliced_out(struct uring_task *task, int res)
{
- struct server_proxy *proxy = container_of(task, struct server_proxy, servertask);
+ struct server_proxy *proxy =
+ container_of(task, struct server_proxy, servertask);
assert_return(task);
assert_task_alive(DBG_PROXY, task);
@@ -236,13 +232,14 @@ proxy_client_spliced_out(struct uring_task *task, int res)
return;
}
- uring_splice(task, proxy->cfd, proxy->cpipe[PIPE_WR], proxy_client_spliced_in);
+ uring_splice(task, proxy->cfd, proxy->cpipe[PIPE_WR],
+ proxy_client_spliced_in);
}
-static void
-proxy_client_spliced_in(struct uring_task *task, int res)
+static void proxy_client_spliced_in(struct uring_task *task, int res)
{
- struct server_proxy *proxy = container_of(task, struct server_proxy, servertask);
+ struct server_proxy *proxy =
+ container_of(task, struct server_proxy, servertask);
assert_return(task);
assert_task_alive(DBG_PROXY, task);
@@ -253,15 +250,16 @@ proxy_client_spliced_in(struct uring_task *task, int res)
return;
}
- uring_splice(task, proxy->cpipe[PIPE_RD], proxy->sfd, proxy_client_spliced_out);
+ uring_splice(task, proxy->cpipe[PIPE_RD], proxy->sfd,
+ proxy_client_spliced_out);
}
static void proxy_server_spliced_in(struct uring_task *task, int res);
-static void
-proxy_server_spliced_out(struct uring_task *task, int res)
+static void proxy_server_spliced_out(struct uring_task *task, int res)
{
- struct server_proxy *proxy = container_of(task, struct server_proxy, servertask);
+ struct server_proxy *proxy =
+ container_of(task, struct server_proxy, servertask);
assert_return(task);
assert_task_alive(DBG_PROXY, task);
@@ -272,13 +270,14 @@ proxy_server_spliced_out(struct uring_task *task, int res)
return;
}
- uring_splice(task, proxy->sfd, proxy->spipe[PIPE_WR], proxy_server_spliced_in);
+ uring_splice(task, proxy->sfd, proxy->spipe[PIPE_WR],
+ proxy_server_spliced_in);
}
-static void
-proxy_server_spliced_in(struct uring_task *task, int res)
+static void proxy_server_spliced_in(struct uring_task *task, int res)
{
- struct server_proxy *proxy = container_of(task, struct server_proxy, servertask);
+ struct server_proxy *proxy =
+ container_of(task, struct server_proxy, servertask);
assert_return(task);
assert_task_alive(DBG_PROXY, task);
@@ -289,13 +288,14 @@ proxy_server_spliced_in(struct uring_task *task, int res)
return;
}
- uring_splice(task, proxy->spipe[PIPE_RD], proxy->cfd, proxy_server_spliced_out);
+ uring_splice(task, proxy->spipe[PIPE_RD], proxy->cfd,
+ proxy_server_spliced_out);
}
-static void
-proxy_connected_cb(struct connection *conn, bool connected)
+static void proxy_connected_cb(struct connection *conn, bool connected)
{
- struct server_proxy *proxy = container_of(conn, struct server_proxy, server_conn);
+ struct server_proxy *proxy =
+ container_of(conn, struct server_proxy, server_conn);
assert_return(conn);
assert_task_alive(DBG_PROXY, &proxy->clienttask);
@@ -313,16 +313,17 @@ proxy_connected_cb(struct connection *conn, bool connected)
ptimer_del_task(&proxy->ptask);
proxy->sfd = proxy->servertask.fd;
- verbose("%s: proxy connection %s -> %s opened",
- proxy->server->name,
+ verbose("%s: proxy connection %s -> %s opened", proxy->server->name,
proxy->client_conn.remote.addrstr,
proxy->server_conn.remote.addrstr);
proxy->begin = time(NULL);
if (cfg->splice_supported) {
debug(DBG_PROXY, "handling proxy connection with splice");
- uring_splice(&proxy->clienttask, proxy->cfd, proxy->cpipe[PIPE_WR], proxy_client_spliced_in);
- uring_splice(&proxy->servertask, proxy->sfd, proxy->spipe[PIPE_WR], proxy_server_spliced_in);
+ uring_splice(&proxy->clienttask, proxy->cfd,
+ proxy->cpipe[PIPE_WR], proxy_client_spliced_in);
+ uring_splice(&proxy->servertask, proxy->sfd,
+ proxy->spipe[PIPE_WR], proxy_server_spliced_in);
} else {
debug(DBG_PROXY, "handling proxy connection with read-write");
uring_tbuf_read(&proxy->clienttask, proxy_client_read);
@@ -330,8 +331,7 @@ proxy_connected_cb(struct connection *conn, bool connected)
}
}
-void
-proxy_refdump(struct server_proxy *proxy)
+void proxy_refdump(struct server_proxy *proxy)
{
assert_return(proxy);
@@ -340,10 +340,10 @@ proxy_refdump(struct server_proxy *proxy)
uring_task_refdump(&proxy->servertask);
}
-static void
-proxy_connect_timer_cb(struct ptimer_task *ptask)
+static void proxy_connect_timer_cb(struct ptimer_task *ptask)
{
- struct server_proxy *proxy = container_of(ptask, struct server_proxy, ptask);
+ struct server_proxy *proxy =
+ container_of(ptask, struct server_proxy, ptask);
assert_return(ptask);
@@ -355,8 +355,8 @@ proxy_connect_timer_cb(struct ptimer_task *ptask)
&proxy->server_conn, proxy_connected_cb);
}
-struct server_proxy *
-proxy_new(struct server *server, struct saddr *client, int fd)
+struct server_proxy *proxy_new(struct server *server, struct saddr *client,
+ int fd)
{
struct server_proxy *proxy;
@@ -412,8 +412,8 @@ proxy_new(struct server *server, struct saddr *client, int fd)
}
proxy->connecting = true;
- connect_any(&proxy->servertask, &server->remotes,
- &proxy->server_conn, proxy_connected_cb);
+ connect_any(&proxy->servertask, &server->remotes, &proxy->server_conn,
+ proxy_connected_cb);
return proxy;
@@ -426,10 +426,10 @@ out:
return NULL;
}
-static void
-local_accept(struct uring_task *task, int res)
+static void local_accept(struct uring_task *task, int res)
{
- struct server_local *local = container_of(task, struct server_local, task);
+ struct server_local *local =
+ container_of(task, struct server_local, task);
struct server *server = container_of(task->parent, struct server, task);
struct server_proxy *proxy;
@@ -445,8 +445,8 @@ local_accept(struct uring_task *task, int res)
saddr_set_addrstr(&local->client);
- verbose("%s: incoming proxy connection: %s -> %s",
- server->name, local->client.addrstr, local->local.addrstr);
+ verbose("%s: incoming proxy connection: %s -> %s", server->name,
+ local->client.addrstr, local->local.addrstr);
if (list_empty(&server->remotes)) {
/* This shouldn't be possible, checked before opening local */
@@ -463,8 +463,7 @@ out:
uring_accept(&local->task, &local->client, local_accept);
}
-bool
-local_open(struct server_local *local)
+bool local_open(struct server_local *local)
{
int sfd;
int option;
@@ -472,14 +471,15 @@ local_open(struct server_local *local)
assert_return(local && local->server, false);
- sfd = socket(local->local.storage.ss_family, SOCK_STREAM | SOCK_CLOEXEC, 0);
+ sfd = socket(local->local.st.ss_family, SOCK_STREAM | SOCK_CLOEXEC, 0);
if (sfd < 0) {
error("socket: %m");
goto error;
}
option = true;
- if (setsockopt(sfd, SOL_SOCKET, SO_REUSEADDR, &option, sizeof(option)) < 0) {
+ if (setsockopt(sfd, SOL_SOCKET, SO_REUSEADDR, &option, sizeof(option)) <
+ 0) {
error("setsockopt: %m");
goto error;
}
@@ -487,7 +487,8 @@ local_open(struct server_local *local)
/* The MC protocol expects the client to send data first */
if (cfg->socket_defer) {
option = true;
- if (setsockopt(sfd, IPPROTO_TCP, TCP_DEFER_ACCEPT, &option, sizeof(option)) < 0)
+ if (setsockopt(sfd, IPPROTO_TCP, TCP_DEFER_ACCEPT, &option,
+ sizeof(option)) < 0)
error("setsockopt: %m");
}
@@ -497,14 +498,16 @@ local_open(struct server_local *local)
*/
if (cfg->socket_freebind) {
option = true;
- if (setsockopt(sfd, IPPROTO_IP, IP_FREEBIND, &option, sizeof(option)) < 0)
+ if (setsockopt(sfd, IPPROTO_IP, IP_FREEBIND, &option,
+ sizeof(option)) < 0)
error("setsockopt: %m");
}
- socket_set_low_latency(sfd, cfg->socket_keepalive,
- cfg->socket_iptos, cfg->socket_nodelay);
+ socket_set_low_latency(sfd, cfg->socket_keepalive, cfg->socket_iptos,
+ cfg->socket_nodelay);
- r = bind(sfd, (struct sockaddr *)&local->local.storage, local->local.addrlen);
+ r = bind(sfd, (struct sockaddr *)&local->local.st,
+ local->local.addrlen);
if (r < 0) {
error("bind: %m");
goto error;
@@ -526,18 +529,17 @@ error:
return false;
}
-void
-local_refdump(struct server_local *local)
+void local_refdump(struct server_local *local)
{
assert_return(local);
uring_task_refdump(&local->task);
}
-static void
-local_free(struct uring_task *task)
+static void local_free(struct uring_task *task)
{
- struct server_local *local = container_of(task, struct server_local, task);
+ struct server_local *local =
+ container_of(task, struct server_local, task);
assert_return(task);
@@ -546,16 +548,14 @@ local_free(struct uring_task *task)
xfree(local);
}
-void
-local_delete(struct server_local *local)
+void local_delete(struct server_local *local)
{
assert_return(local);
uring_task_destroy(&local->task);
}
-struct server_local *
-local_new(struct server *server, struct saddr *saddr)
+struct server_local *local_new(struct server *server, struct saddr *saddr)
{
struct server_local *local;
@@ -574,4 +574,3 @@ local_new(struct server *server, struct saddr *saddr)
xfree(saddr);
return local;
}
-
diff --git a/minecproxy/server-proxy.h b/minecproxy/server-proxy.h
index ee3bda3..877ae9a 100644
--- a/minecproxy/server-proxy.h
+++ b/minecproxy/server-proxy.h
@@ -15,7 +15,7 @@ struct server_proxy {
uint64_t server_bytes;
int spipe[2];
int sfd;
-
+
bool connecting;
time_t begin;
struct ptimer_task ptask;
diff --git a/minecproxy/server-rcon.c b/minecproxy/server-rcon.c
index b19bdb1..9562aa9 100644
--- a/minecproxy/server-rcon.c
+++ b/minecproxy/server-rcon.c
@@ -16,8 +16,7 @@
#include "server-rcon.h"
#include "rcon-protocol.h"
-static int
-rcon_packet_complete(struct uring_task *task, _unused_ int res)
+static int rcon_packet_complete(struct uring_task *task, _unused_ int res)
{
assert_return(task, -EINVAL);
assert_task_alive_or(DBG_RCON, task, return -EINTR);
@@ -25,23 +24,22 @@ rcon_packet_complete(struct uring_task *task, _unused_ int res)
return rcon_protocol_packet_complete(task->tbuf->buf, task->tbuf->len);
}
-static bool
-rcon_check_reply(struct uring_task *task, int res, int32_t *id,
- int32_t *type, const char **msg)
+static bool rcon_check_reply(struct uring_task *task, int res, int32_t *id,
+ int32_t *type, const char **msg)
{
struct server *server = container_of(task, struct server, rcon_task);
const char *error;
if (res < 0) {
- error("rcon(%s): reading reply failed, res: %i",
- server->name, res);
+ error("rcon(%s): reading reply failed, res: %i", server->name,
+ res);
goto error;
}
- if (!rcon_protocol_read_packet(task->tbuf->buf, task->tbuf->len,
- id, type, msg, &error)) {
- error("rcon(%s): failed to parse packet: %s",
- server->name, error);
+ if (!rcon_protocol_read_packet(task->tbuf->buf, task->tbuf->len, id,
+ type, msg, &error)) {
+ error("rcon(%s): failed to parse packet: %s", server->name,
+ error);
goto error;
}
@@ -52,8 +50,7 @@ error:
return false;
}
-static void
-rcon_stop_reply(struct uring_task *task, int res)
+static void rcon_stop_reply(struct uring_task *task, int res)
{
struct server *server = container_of(task, struct server, rcon_task);
int32_t id;
@@ -82,8 +79,7 @@ out:
uring_task_close_fd(task);
}
-static void
-rcon_stop_sent(struct uring_task *task, int res)
+static void rcon_stop_sent(struct uring_task *task, int res)
{
struct server *server = container_of(task, struct server, rcon_task);
@@ -101,8 +97,7 @@ rcon_stop_sent(struct uring_task *task, int res)
uring_tbuf_read_until(task, rcon_packet_complete, rcon_stop_reply);
}
-static void
-rcon_login_reply(struct uring_task *task, int res)
+static void rcon_login_reply(struct uring_task *task, int res)
{
struct server *server = container_of(task, struct server, rcon_task);
int32_t id;
@@ -140,8 +135,7 @@ error:
uring_task_close_fd(task);
}
-static void
-rcon_login_sent(struct uring_task *task, int res)
+static void rcon_login_sent(struct uring_task *task, int res)
{
struct server *server = container_of(task, struct server, rcon_task);
@@ -149,8 +143,8 @@ rcon_login_sent(struct uring_task *task, int res)
assert_task_alive(DBG_RCON, task);
if (res != task->tbuf->len) {
- error("rcon(%s): sending login failed, res: %i",
- server->name, res);
+ error("rcon(%s): sending login failed, res: %i", server->name,
+ res);
uring_task_close_fd(task);
return;
}
@@ -159,8 +153,7 @@ rcon_login_sent(struct uring_task *task, int res)
uring_tbuf_read_until(task, rcon_packet_complete, rcon_login_reply);
}
-static void
-rcon_connected_cb(struct connection *conn, bool connected)
+static void rcon_connected_cb(struct connection *conn, bool connected)
{
struct server *server = container_of(conn, struct server, rcon_conn);
@@ -175,13 +168,11 @@ rcon_connected_cb(struct connection *conn, bool connected)
rcon_protocol_create_packet(server->rcon_tbuf.buf,
sizeof(server->rcon_tbuf.buf),
&server->rcon_tbuf.len, 1,
- RCON_PACKET_LOGIN,
- server->rcon_password);
+ RCON_PACKET_LOGIN, server->rcon_password);
uring_tbuf_write(&server->rcon_task, rcon_login_sent);
}
-static void
-rcon_free(struct uring_task *task)
+static void rcon_free(struct uring_task *task)
{
struct server *server = container_of(task, struct server, rcon_task);
@@ -190,25 +181,24 @@ rcon_free(struct uring_task *task)
debug(DBG_RCON, "task %p, server %s (%p)", task, server->name, server);
}
-void
-rcon_stop(struct server *server)
+void rcon_stop(struct server *server)
{
- assert_return(server && !list_empty(&server->rcons) && !empty_str(server->rcon_password));
+ assert_return(server && !list_empty(&server->rcons) &&
+ !empty_str(server->rcon_password));
assert_task_alive(DBG_RCON, &server->rcon_task);
- connect_any(&server->rcon_task, &server->rcons, &server->rcon_conn, rcon_connected_cb);
+ connect_any(&server->rcon_task, &server->rcons, &server->rcon_conn,
+ rcon_connected_cb);
}
-void
-rcon_refdump(struct server *server)
+void rcon_refdump(struct server *server)
{
assert_return(server);
uring_task_refdump(&server->rcon_task);
}
-void
-rcon_delete(struct server *server)
+void rcon_delete(struct server *server)
{
assert_return(server);
@@ -216,12 +206,10 @@ rcon_delete(struct server *server)
uring_task_destroy(&server->rcon_task);
}
-void
-rcon_init(struct server *server)
+void rcon_init(struct server *server)
{
assert_return(server);
uring_task_init(&server->rcon_task, "rcon", &server->task, rcon_free);
uring_task_set_buf(&server->rcon_task, &server->rcon_tbuf);
}
-
diff --git a/minecproxy/server.c b/minecproxy/server.c
index 39b4024..8c521cf 100644
--- a/minecproxy/server.c
+++ b/minecproxy/server.c
@@ -20,8 +20,8 @@
#include "idle.h"
#include "systemd.h"
-static bool
-set_property(struct server *server, char **property, const char *value)
+static bool set_property(struct server *server, char **property,
+ const char *value)
{
assert_return(server && !*property && !empty_str(value), false);
@@ -34,8 +34,7 @@ set_property(struct server *server, char **property, const char *value)
return true;
}
-void
-server_refdump(struct server *server)
+void server_refdump(struct server *server)
{
struct server_local *local;
struct server_proxy *proxy;
@@ -53,8 +52,7 @@ server_refdump(struct server *server)
rcon_refdump(server);
}
-static void
-server_free(struct uring_task *task)
+static void server_free(struct uring_task *task)
{
struct server *server = container_of(task, struct server, task);
@@ -72,8 +70,7 @@ server_free(struct uring_task *task)
xfree(server);
}
-void
-server_delete(struct server *server)
+void server_delete(struct server *server)
{
struct server_local *local, *ltmp;
struct server_proxy *proxy, *ptmp;
@@ -107,7 +104,7 @@ server_delete(struct server *server)
list_for_each_entry_safe(dns, dtmp, &server->dnslookups, list)
gai_cancel(&dns->gcb);
-
+
uring_task_destroy(&server->idle_task);
uring_poll_cancel(&server->exec_task);
uring_task_put(&server->exec_task);
@@ -115,8 +112,7 @@ server_delete(struct server *server)
uring_task_put(&server->ann_task);
}
-void
-server_delete_by_name(const char *name)
+void server_delete_by_name(const char *name)
{
struct server *server;
@@ -130,8 +126,7 @@ server_delete_by_name(const char *name)
}
}
-static void
-server_dump(struct server *server)
+static void server_dump(struct server *server)
{
struct server_local *local;
struct saddr *remote;
@@ -151,8 +146,9 @@ server_dump(struct server *server)
verbose(" * Type: unknown");
break;
}
- verbose(" * Name: %s", server->pretty_name ? server->pretty_name : "<undefined>");
- verbose(" * Announce port: %" PRIu16, server->announce_port);
+ verbose(" * Name: %s",
+ server->pretty_name ? server->pretty_name : "<undefined>");
+ verbose(" * Announce port: %" PRIu16, server->announce_port);
if (!list_empty(&server->locals)) {
verbose(" * Local:");
@@ -175,8 +171,7 @@ server_dump(struct server *server)
verbose("");
}
-static void
-server_exec_free(struct uring_task *task)
+static void server_exec_free(struct uring_task *task)
{
assert_return(task);
@@ -188,8 +183,7 @@ server_exec_free(struct uring_task *task)
#endif
/* FIXME: update states */
-static void
-server_exec_done(struct uring_task *task, int res)
+static void server_exec_done(struct uring_task *task, int res)
{
struct server *server = container_of(task, struct server, exec_task);
int r;
@@ -205,10 +199,10 @@ server_exec_done(struct uring_task *task, int res)
}
r = waitid(P_PIDFD, server->exec_task.fd, &info, WEXITED);
- if (r < 0) {
- error("waitid: %m");
+ if (r < 0) {
+ error("waitid: %m");
goto out;
- }
+ }
if (info.si_status == 0)
debug(DBG_SRV, "command successfully executed");
@@ -219,8 +213,7 @@ out:
uring_task_close_fd(&server->exec_task);
}
-static int
-server_exec_child(void *ptr)
+static int server_exec_child(void *ptr)
{
const char *cmd = ptr;
@@ -234,8 +227,7 @@ server_exec_child(void *ptr)
#define CLONE_PIDFD 0x00001000
#endif
-static bool
-server_exec(struct server *server, const char *cmd)
+static bool server_exec(struct server *server, const char *cmd)
{
char stack[4096]; /* Beautiful/horrible hack :) */
int pidfd;
@@ -243,9 +235,9 @@ server_exec(struct server *server, const char *cmd)
assert_return(server && cmd && server->exec_task.fd < 1, false);
- r = clone(server_exec_child, stack + sizeof(stack),
- CLONE_VM | CLONE_VFORK | CLONE_PIDFD | SIGCHLD,
- (void *)cmd, &pidfd);
+ r = clone(server_exec_child, stack + sizeof(stack),
+ CLONE_VM | CLONE_VFORK | CLONE_PIDFD | SIGCHLD, (void *)cmd,
+ &pidfd);
if (r < 0) {
error("clone: %m: %i", r);
return false;
@@ -256,14 +248,14 @@ server_exec(struct server *server, const char *cmd)
return true;
}
-static bool
-server_check_running(struct server *server)
+static bool server_check_running(struct server *server)
{
assert_return(server, false);
/* FIXME: other methods, rcon? */
if (server->systemd_service) {
- verbose("%s: checking if systemd service is running", server->name);
+ verbose("%s: checking if systemd service is running",
+ server->name);
if (systemd_service_running(server)) {
server->state = SERVER_STATE_RUNNING;
return true;
@@ -276,21 +268,19 @@ server_check_running(struct server *server)
return false;
}
-bool
-server_start(struct server *server)
+bool server_start(struct server *server)
{
assert_return(server, false);
assert_task_alive_or(DBG_SRV, &server->task, return false);
switch (server->start_method) {
-
case SERVER_START_METHOD_EXEC:
verbose("Starting server %s via external cmd", server->name);
return server_exec(server, server->start_exec);
case SERVER_START_METHOD_SYSTEMD:
- verbose("Starting server %s via systemd (%s)",
- server->name, server->systemd_service);
+ verbose("Starting server %s via systemd (%s)", server->name,
+ server->systemd_service);
if (systemd_service_start(server)) {
server->state = SERVER_STATE_RUNNING;
@@ -306,21 +296,19 @@ server_start(struct server *server)
return false;
}
-bool
-server_stop(struct server *server)
+bool server_stop(struct server *server)
{
assert_return(server, false);
assert_task_alive_or(DBG_SRV, &server->task, return false);
switch (server->stop_method) {
-
case SERVER_STOP_METHOD_EXEC:
verbose("Stopping server %s via external cmd", server->name);
return server_exec(server, server->stop_exec);
case SERVER_STOP_METHOD_SYSTEMD:
- verbose("Stopping server %s via systemd (%s)",
- server->name, server->systemd_service);
+ verbose("Stopping server %s via systemd (%s)", server->name,
+ server->systemd_service);
if (systemd_service_stop(server)) {
server->state = SERVER_STATE_STOPPED;
return true;
@@ -340,22 +328,19 @@ server_stop(struct server *server)
return false;
}
-static void
-server_idle_free(struct uring_task *task)
+static void server_idle_free(struct uring_task *task)
{
assert_return(task);
debug(DBG_ANN, "called");
}
-void
-server_set_active_players(struct server *server, int count)
+void server_set_active_players(struct server *server, int count)
{
assert_return(server);
assert_task_alive(DBG_IDLE, &server->idle_task);
- debug(DBG_IDLE, "%s: currently %i active players",
- server->name, count);
+ debug(DBG_IDLE, "%s: currently %i active players", server->name, count);
if (count < 0)
return;
@@ -368,12 +353,11 @@ server_set_active_players(struct server *server, int count)
if (server->idle_count > server->idle_timeout) {
verbose("stopping idle server %s", server->name);
- server_stop(server);
+ server_stop(server);
}
}
-static void
-server_idle_connected_cb(struct connection *conn, bool connected)
+static void server_idle_connected_cb(struct connection *conn, bool connected)
{
struct server *server = container_of(conn, struct server, idle_conn);
@@ -393,8 +377,7 @@ server_idle_connected_cb(struct connection *conn, bool connected)
idle_check_get_player_count(server, conn);
}
-bool
-server_idle_check(struct server *server)
+bool server_idle_check(struct server *server)
{
assert_return(server, false);
@@ -413,21 +396,19 @@ server_idle_check(struct server *server)
return true;
}
- connect_any(&server->idle_task, &server->remotes,
- &server->idle_conn, server_idle_connected_cb);
+ connect_any(&server->idle_task, &server->remotes, &server->idle_conn,
+ server_idle_connected_cb);
return true;
}
-static void
-server_announce_free(struct uring_task *task)
+static void server_announce_free(struct uring_task *task)
{
assert_return(task);
debug(DBG_ANN, "called");
}
-static void
-server_announce_cb(struct uring_task *task, int res)
+static void server_announce_cb(struct uring_task *task, int res)
{
struct server *server = container_of(task, struct server, ann_task);
@@ -443,8 +424,7 @@ server_announce_cb(struct uring_task *task, int res)
uring_task_set_fd(&server->ann_task, -1);
}
-bool
-server_announce(struct server *server, int fd)
+bool server_announce(struct server *server, int fd)
{
assert_return(server && fd >= 0, false);
@@ -458,8 +438,7 @@ server_announce(struct server *server, int fd)
return true;
}
-bool
-server_commit(struct server *server)
+bool server_commit(struct server *server)
{
struct server_local *local;
uint16_t port;
@@ -486,14 +465,14 @@ server_commit(struct server *server)
if (server->stop_method == SERVER_STOP_METHOD_RCON &&
list_empty(&server->rcons)) {
error("%s: rcon stop method missing rcon address",
- server->name);
+ server->name);
return false;
}
if (server->stop_method == SERVER_STOP_METHOD_RCON &&
!server->rcon_password) {
error("%s: rcon stop method missing rcon password",
- server->name);
+ server->name);
return false;
}
@@ -501,12 +480,13 @@ server_commit(struct server *server)
server->stop_method == SERVER_STOP_METHOD_SYSTEMD) &&
!server->systemd_service) {
error("%s: systemd start/stop method missing systemd service",
- server->name);
+ server->name);
return false;
}
if (server->systemd_service && !server->systemd_obj) {
- server->systemd_obj = systemd_object_path(server->systemd_service);
+ server->systemd_obj =
+ systemd_object_path(server->systemd_service);
if (!server->systemd_obj) {
error("%s: failed to create systemd object path (%s)",
server->name, server->systemd_service);
@@ -516,29 +496,33 @@ server_commit(struct server *server)
if (server->idle_timeout > 0 &&
server->stop_method == SERVER_STOP_METHOD_UNDEFINED) {
- error("%s: idle_timeout set but missing stop method", server->name);
+ error("%s: idle_timeout set but missing stop method",
+ server->name);
return false;
}
switch (server->type) {
case SERVER_TYPE_ANNOUNCE:
if (server->announce_port < 1) {
- error("%s: missing announce port", server->name);
+ error("%s: missing announce port", server->name);
return false;
}
if (server->start_method != SERVER_START_METHOD_UNDEFINED) {
- error("%s: can't set start_method for announce server", server->name);
+ error("%s: can't set start_method for announce server",
+ server->name);
return false;
}
if (!list_empty(&server->locals)) {
- error("%s: can't set local addresses for announce server", server->name);
+ error("%s: can't set local addresses for announce server",
+ server->name);
return false;
}
if (!list_empty(&server->remotes)) {
- error("%s: can't set remote addresses for announce server", server->name);
+ error("%s: can't set remote addresses for announce server",
+ server->name);
return false;
}
@@ -546,17 +530,20 @@ server_commit(struct server *server)
case SERVER_TYPE_PROXY:
if (server->announce_port >= 1) {
- error("%s: can't set announce port for proxy server", server->name);
+ error("%s: can't set announce port for proxy server",
+ server->name);
return false;
}
if (list_empty(&server->locals)) {
- error("%s: missing local addresses for proxy server", server->name);
+ error("%s: missing local addresses for proxy server",
+ server->name);
return false;
}
if (list_empty(&server->remotes)) {
- error("%s: missing remote addresses for proxy server", server->name);
+ error("%s: missing remote addresses for proxy server",
+ server->name);
return false;
}
@@ -578,7 +565,8 @@ server_commit(struct server *server)
}
if (server->announce_port < 1) {
- error("%s: can't determine which port to announce", server->name);
+ error("%s: can't determine which port to announce",
+ server->name);
return false;
}
@@ -591,30 +579,34 @@ server_commit(struct server *server)
if (!server->pretty_name) {
char *suffix;
-
+
suffix = strrchr(server->name, '.');
if (!suffix || suffix == server->name) {
error("invalid server name: %s", server->name);
return false;
}
- server->pretty_name = xstrndup(server->name, suffix - server->name);
+ server->pretty_name =
+ xstrndup(server->name, suffix - server->name);
if (!server->pretty_name) {
- error("failed to create display name: %s", server->name);
+ error("failed to create display name: %s",
+ server->name);
return false;
}
}
r = snprintf(server->ann_buf.buf, sizeof(server->ann_buf.buf),
- "[MOTD]%s[/MOTD][AD]%" PRIu16 "[/AD]",
- server->pretty_name, server->announce_port);
+ "[MOTD]%s[/MOTD][AD]%" PRIu16 "[/AD]", server->pretty_name,
+ server->announce_port);
if (r < 1 || r >= sizeof(server->ann_buf.buf)) {
- error("%s: unable to create announce msg: %i\n", server->name, r);
+ error("%s: unable to create announce msg: %i\n", server->name,
+ r);
return false;
}
server->ann_buf.len = r;
- /* FIXME: config, dont reread config if server running, make sure fd is available before this is called */
+ /* FIXME: config, dont reread config if server running, make sure fd is
+ * available before this is called */
server_dump(server);
list_for_each_entry(local, &server->locals, list)
@@ -628,8 +620,7 @@ server_commit(struct server *server)
return true;
}
-bool
-server_add_remote(struct server *server, struct saddr *remote)
+bool server_add_remote(struct server *server, struct saddr *remote)
{
assert_return(server && remote, false);
assert_task_alive_or(DBG_SRV, &server->task, return false);
@@ -639,8 +630,7 @@ server_add_remote(struct server *server, struct saddr *remote)
return true;
}
-bool
-server_add_local(struct server *server, struct saddr *saddr)
+bool server_add_local(struct server *server, struct saddr *saddr)
{
struct server_local *local;
@@ -655,8 +645,7 @@ server_add_local(struct server *server, struct saddr *saddr)
return true;
}
-bool
-server_add_rcon(struct server *server, struct saddr *rcon)
+bool server_add_rcon(struct server *server, struct saddr *rcon)
{
assert_return(server && rcon, false);
assert_task_alive_or(DBG_SRV, &server->task, return false);
@@ -666,21 +655,20 @@ server_add_rcon(struct server *server, struct saddr *rcon)
return true;
}
-bool
-server_set_rcon_password(struct server *server, const char *password)
+bool server_set_rcon_password(struct server *server, const char *password)
{
assert_return(server && !empty_str(password), false);
return set_property(server, &server->rcon_password, password);
}
-bool
-server_set_systemd_service(struct server *server, const char *service)
+bool server_set_systemd_service(struct server *server, const char *service)
{
const char *suffix;
char *tmp;
- assert_return(server && !empty_str(service) && !server->systemd_service, false);
+ assert_return(server && !empty_str(service) && !server->systemd_service,
+ false);
suffix = strrchr(service, '.');
if (!suffix || !streq(suffix, ".service")) {
@@ -699,55 +687,52 @@ server_set_systemd_service(struct server *server, const char *service)
return true;
}
-bool
-server_set_stop_method(struct server *server,
- enum server_stop_method stop_method)
+bool server_set_stop_method(struct server *server,
+ enum server_stop_method stop_method)
{
assert_return(server->stop_method == SERVER_STOP_METHOD_UNDEFINED &&
- stop_method != SERVER_STOP_METHOD_UNDEFINED, false);
+ stop_method != SERVER_STOP_METHOD_UNDEFINED,
+ false);
server->stop_method = stop_method;
return true;
}
-bool
-server_set_start_method(struct server *server,
- enum server_start_method start_method)
+bool server_set_start_method(struct server *server,
+ enum server_start_method start_method)
{
assert_return(server->start_method == SERVER_START_METHOD_UNDEFINED &&
- start_method != SERVER_START_METHOD_UNDEFINED, false);
+ start_method != SERVER_START_METHOD_UNDEFINED,
+ false);
server->start_method = start_method;
return true;
}
-bool
-server_set_stop_exec(struct server *server, const char *cmd)
+bool server_set_stop_exec(struct server *server, const char *cmd)
{
assert_return(server && !empty_str(cmd), false);
return set_property(server, &server->stop_exec, cmd);
}
-bool
-server_set_start_exec(struct server *server, const char *cmd)
+bool server_set_start_exec(struct server *server, const char *cmd)
{
assert_return(server && !empty_str(cmd), false);
return set_property(server, &server->start_exec, cmd);
}
-bool
-server_set_idle_timeout(struct server *server, uint16_t timeout)
+bool server_set_idle_timeout(struct server *server, uint16_t timeout)
{
- assert_return(server && timeout > 0 && server->idle_timeout == 0, false);
+ assert_return(server && timeout > 0 && server->idle_timeout == 0,
+ false);
server->idle_timeout = timeout;
return true;
}
-bool
-server_set_port(struct server *server, uint16_t port)
+bool server_set_port(struct server *server, uint16_t port)
{
assert_return(server && port > 0 && server->announce_port == 0, false);
@@ -755,8 +740,7 @@ server_set_port(struct server *server, uint16_t port)
return true;
}
-bool
-server_set_type(struct server *server, enum server_type type)
+bool server_set_type(struct server *server, enum server_type type)
{
assert_return(server && type != SERVER_TYPE_UNDEFINED, false);
@@ -774,16 +758,14 @@ server_set_type(struct server *server, enum server_type type)
return true;
}
-bool
-server_set_pretty_name(struct server *server, const char *pretty_name)
+bool server_set_pretty_name(struct server *server, const char *pretty_name)
{
assert_return(server && !empty_str(pretty_name), false);
return set_property(server, &server->pretty_name, pretty_name);
}
-struct server *
-server_new(const char *name)
+struct server *server_new(const char *name)
{
struct server *server;
@@ -810,16 +792,21 @@ server_new(const char *name)
server->start_method = SERVER_START_METHOD_UNDEFINED;
server->idle_timeout = 0;
- uring_task_init(&server->task, server->name, uring_parent(), server_free);
+ uring_task_init(&server->task, server->name, uring_parent(),
+ server_free);
uring_task_set_buf(&server->task, &server->tbuf);
- uring_task_init(&server->ann_task, "announce", &server->task, server_announce_free);
+ uring_task_init(&server->ann_task, "announce", &server->task,
+ server_announce_free);
uring_task_set_buf(&server->ann_task, &server->ann_buf);
- saddr_set_ipv4(&server->ann_task.saddr, cinet_addr(224,0,2,60), htons(4445));
+ saddr_set_ipv4(&server->ann_task.saddr, cinet_addr(224,0,2,60),
+ htons(4445));
- uring_task_init(&server->exec_task, "exec", &server->task, server_exec_free);
+ uring_task_init(&server->exec_task, "exec", &server->task,
+ server_exec_free);
- uring_task_init(&server->idle_task, "idle", &server->task, server_idle_free);
+ uring_task_init(&server->idle_task, "idle", &server->task,
+ server_idle_free);
uring_task_set_buf(&server->idle_task, &server->idle_buf);
rcon_init(server);
diff --git a/minecproxy/server.h b/minecproxy/server.h
index ff4c28e..937fa67 100644
--- a/minecproxy/server.h
+++ b/minecproxy/server.h
@@ -1,6 +1,7 @@
#ifndef fooserverhfoo
#define fooserverhfoo
+/* clang-format off */
enum server_state {
SERVER_STATE_INIT = 0,
SERVER_STATE_CFG_OK = 1,
@@ -8,6 +9,7 @@ enum server_state {
SERVER_STATE_STOPPED = 3,
SERVER_STATE_DEAD = 4,
};
+/* clang-format on */
enum server_type {
SERVER_TYPE_UNDEFINED,
@@ -39,7 +41,7 @@ struct server {
struct list_head rcons;
struct list_head dnslookups;
enum server_state state;
-
+
enum server_stop_method stop_method;
enum server_start_method start_method;
@@ -125,4 +127,3 @@ bool server_set_pretty_name(struct server *server, const char *pretty_name);
struct server *server_new(const char *name);
#endif
-
diff --git a/minecproxy/signal-handler.c b/minecproxy/signal-handler.c
index 15c3816..ba92382 100644
--- a/minecproxy/signal-handler.c
+++ b/minecproxy/signal-handler.c
@@ -21,16 +21,14 @@ struct signal_ev {
int pipe[2];
};
-static void
-signal_delete()
+static void signal_delete()
{
assert_return(cfg->signal);
uring_task_destroy(&cfg->signal->task);
}
-static void
-signalfd_read(struct uring_task *task, int res)
+static void signalfd_read(struct uring_task *task, int res)
{
struct signal_ev *signal = container_of(task, struct signal_ev, task);
struct server *server, *stmp;
@@ -60,8 +58,8 @@ signalfd_read(struct uring_task *task, int res)
goto out;
}
- debug(DBG_DNS, "DNS lookup complete, dns: %p, dns->cb: %p",
- dns, dns->cb);
+ debug(DBG_DNS, "DNS lookup complete, dns: %p, dns->cb: %p", dns,
+ dns->cb);
dns->cb(dns);
break;
}
@@ -109,8 +107,8 @@ out:
uring_tbuf_read(&signal->task, signalfd_read);
}
-static void
-hack_signal_handler(int signum, siginfo_t *si, _unused_ void *ucontext)
+static void hack_signal_handler(int signum, siginfo_t *si,
+ _unused_ void *ucontext)
{
ssize_t r;
@@ -119,11 +117,9 @@ hack_signal_handler(int signum, siginfo_t *si, _unused_ void *ucontext)
r = write(cfg->signal->pipe[PIPE_WR], si, sizeof(*si));
if (r != sizeof(*si))
error("write: %zi\n", r);
-
}
-static void
-signal_free(struct uring_task *task)
+static void signal_free(struct uring_task *task)
{
struct signal_ev *signal = container_of(task, struct signal_ev, task);
@@ -135,18 +131,16 @@ signal_free(struct uring_task *task)
xfree(signal);
}
-void
-signal_refdump()
+void signal_refdump()
{
assert_return(cfg->signal);
uring_task_refdump(&cfg->signal->task);
}
-void
-signal_init()
+void signal_init()
{
- //sigset_t mask;
+ // sigset_t mask;
struct signal_ev *signal;
assert_return(!cfg->signal);
@@ -183,12 +177,11 @@ signal_init()
action.sa_flags = 0;
sigaction(SIGPIPE, &action, NULL);
- debug(DBG_SIG, "using pipe fds %i -> %i",
- signal->pipe[PIPE_WR], signal->pipe[PIPE_RD]);
+ debug(DBG_SIG, "using pipe fds %i -> %i", signal->pipe[PIPE_WR],
+ signal->pipe[PIPE_RD]);
uring_task_init(&signal->task, "signal", uring_parent(), signal_free);
uring_task_set_fd(&signal->task, signal->pipe[PIPE_RD]);
uring_task_set_buf(&signal->task, &signal->tbuf);
cfg->signal = signal;
uring_tbuf_read(&signal->task, signalfd_read);
}
-
diff --git a/minecproxy/systemd.c b/minecproxy/systemd.c
index e9ed885..a973a55 100644
--- a/minecproxy/systemd.c
+++ b/minecproxy/systemd.c
@@ -6,12 +6,11 @@
#include "server.h"
#include "systemd.h"
-#define SYSTEMD_DBUS_SERVICE "org.freedesktop.systemd1"
-#define SYSTEMD_DBUS_INTERFACE "org.freedesktop.systemd1.Unit"
-#define SYSTEMD_DBUS_PATH_PREFIX "/org/freedesktop/systemd1/unit/"
+#define SYSTEMD_DBUS_SERVICE "org.freedesktop.systemd1"
+#define SYSTEMD_DBUS_INTERFACE "org.freedesktop.systemd1.Unit"
+#define SYSTEMD_DBUS_PATH_PREFIX "/org/freedesktop/systemd1/unit/"
-static inline char
-tohex(uint8_t val)
+static inline char tohex(uint8_t val)
{
static const char hex[] = "0123456789abcdef";
@@ -29,8 +28,7 @@ tohex(uint8_t val)
*
* Example: minecraft@world1.service -> minecraft_40world1_2eservice
*/
-char *
-systemd_object_path(const char *service)
+char *systemd_object_path(const char *service)
{
char *r;
char *d;
@@ -46,8 +44,7 @@ systemd_object_path(const char *service)
d = r + STRLEN(SYSTEMD_DBUS_PATH_PREFIX);
for (s = service; *s; s++) {
- if ((*s >= 'a' && *s <= 'z') ||
- (*s >= 'A' && *s <= 'Z') ||
+ if ((*s >= 'a' && *s <= 'z') || (*s >= 'A' && *s <= 'Z') ||
(*s >= '0' && *s <= '9')) {
*(d++) = *s;
continue;
@@ -62,17 +59,15 @@ systemd_object_path(const char *service)
return r;
}
-void
-systemd_delete()
+void systemd_delete()
{
- assert_return_silent(cfg->sd_bus);
+ assert_return_silent(cfg->sd_bus);
- sd_bus_unref(cfg->sd_bus);
+ sd_bus_unref(cfg->sd_bus);
cfg->sd_bus = NULL;
}
-static sd_bus *
-get_bus()
+static sd_bus *get_bus()
{
int r;
@@ -82,7 +77,8 @@ get_bus()
if (!cfg->sd_bus) {
r = sd_bus_open_user(&cfg->sd_bus);
if (r < 0) {
- error("failed to connect to user system bus: %s", strerror(-r));
+ error("failed to connect to user system bus: %s",
+ strerror(-r));
cfg->sd_bus_failed = true;
return NULL;
}
@@ -94,37 +90,36 @@ get_bus()
/*
* Check if a systemd service is running.
*
- * This is equivalent to (assuming service minecraft@world1):
- * gdbus call --session
- * --dest org.freedesktop.systemd1
- * --object-path /org/freedesktop/systemd1/unit/minecraft_40world1_2eservice
+ * This is equivalent to (assuming service mc@world1):
+ * gdbus call --session
+ * --dest org.freedesktop.systemd1
+ * --object-path /org/freedesktop/systemd1/unit/mc_40world1_2eservice
* --method org.freedesktop.DBus.Properties.Get
- * "org.freedesktop.systemd1.Unit"
+ * "org.freedesktop.systemd1.Unit"
* "ActiveState"
*/
-bool
-systemd_service_running(struct server *server)
+bool systemd_service_running(struct server *server)
{
sd_bus *bus = get_bus();
- sd_bus_error error = SD_BUS_ERROR_NULL;
+ sd_bus_error error = SD_BUS_ERROR_NULL;
char *status = NULL;
bool running = false;
int r;
- assert_return(server && bus && server->systemd_service && server->systemd_obj, false);
+ assert_return(server && bus && server->systemd_service &&
+ server->systemd_obj,
+ false);
- r = sd_bus_get_property_string(bus,
- SYSTEMD_DBUS_SERVICE,
+ r = sd_bus_get_property_string(bus, SYSTEMD_DBUS_SERVICE,
server->systemd_obj,
- SYSTEMD_DBUS_INTERFACE,
- "ActiveState",
- &error,
- &status);
- if (r < 0) {
- error("failed to get status for service %s (%s): %s",
- server->systemd_service, server->systemd_obj, error.message);
+ SYSTEMD_DBUS_INTERFACE, "ActiveState",
+ &error, &status);
+ if (r < 0) {
+ error("failed to get status for service %s (%s): %s",
+ server->systemd_service, server->systemd_obj,
+ error.message);
goto out;
- }
+ }
if (streq(status, "active")) {
running = true;
@@ -136,64 +131,58 @@ systemd_service_running(struct server *server)
out:
free(status);
- sd_bus_error_free(&error);
+ sd_bus_error_free(&error);
return running;
}
-static bool
-systemd_service_action(struct server *server, const char *action)
+static bool systemd_service_action(struct server *server, const char *action)
{
- sd_bus_error error = SD_BUS_ERROR_NULL;
- sd_bus_message *m = NULL;
+ sd_bus_error error = SD_BUS_ERROR_NULL;
+ sd_bus_message *m = NULL;
sd_bus *bus = get_bus();
const char *path;
bool performed = false;
int r;
- assert_return(server && bus && server->systemd_service && server->systemd_obj && action, false);
+ assert_return(server && bus && server->systemd_service &&
+ server->systemd_obj && action,
+ false);
- r = sd_bus_call_method(bus,
- SYSTEMD_DBUS_SERVICE,
- server->systemd_obj,
- SYSTEMD_DBUS_INTERFACE,
- action,
- &error,
- &m,
- "s",
+ r = sd_bus_call_method(bus, SYSTEMD_DBUS_SERVICE, server->systemd_obj,
+ SYSTEMD_DBUS_INTERFACE, action, &error, &m, "s",
"fail");
- if (r < 0) {
- error("failed to perform action %s on systemd service %s: %s",
+ if (r < 0) {
+ error("failed to perform action %s on systemd service %s: %s",
action, server->systemd_service, error.message);
goto out;
- }
+ }
- r = sd_bus_message_read(m, "o", &path);
- if (r < 0) {
- error("failed to parse response message: %s", strerror(-r));
+ r = sd_bus_message_read(m, "o", &path);
+ if (r < 0) {
+ error("failed to parse response message: %s", strerror(-r));
goto out;
- }
+ }
- verbose("action %s queued for service %s",
- action, server->systemd_service);
+ verbose("action %s queued for service %s", action,
+ server->systemd_service);
performed = true;
out:
- sd_bus_error_free(&error);
- sd_bus_message_unref(m);
+ sd_bus_error_free(&error);
+ sd_bus_message_unref(m);
return performed;
}
/*
* Stop systemd service.
*
- * This is equivalent to (assuming service minecraft@world1):
- * gdbus call --session
- * --dest org.freedesktop.systemd1
- * --object-path /org/freedesktop/systemd1/unit/minecraft_40world1_2eservice
+ * This is equivalent to (assuming service mc@world1):
+ * gdbus call --session
+ * --dest org.freedesktop.systemd1
+ * --object-path /org/freedesktop/systemd1/unit/mc_40world1_2eservice
* --method org.freedesktop.systemd1.Unit.Stop "fail"
*/
-bool
-systemd_service_stop(struct server *server)
+bool systemd_service_stop(struct server *server)
{
assert_return(server, false);
@@ -203,17 +192,15 @@ systemd_service_stop(struct server *server)
/*
* Start systemd service.
*
- * This is equivalent to (assuming service minecraft@world1):
- * gdbus call --session
- * --dest org.freedesktop.systemd1
- * --object-path /org/freedesktop/systemd1/unit/minecraft_40world1_2eservice
+ * This is equivalent to (assuming service mc@world1):
+ * gdbus call --session
+ * --dest org.freedesktop.systemd1
+ * --object-path /org/freedesktop/systemd1/unit/mc_40world1_2eservice
* --method org.freedesktop.systemd1.Unit.Start "fail"
*/
-bool
-systemd_service_start(struct server *server)
+bool systemd_service_start(struct server *server)
{
assert_return(server, false);
return systemd_service_action(server, "Start");
}
-
diff --git a/minecproxy/uring.c b/minecproxy/uring.c
index abea592..dd0d28a 100644
--- a/minecproxy/uring.c
+++ b/minecproxy/uring.c
@@ -19,23 +19,24 @@ struct uring_ev {
int tfd;
};
+/* clang-format off */
enum cqe_type {
CQE_TYPE_NORMAL = 0x0,
CQE_TYPE_CANCEL = 0x1,
CQE_TYPE_CLOSE = 0x2,
CQE_TYPE_POLL_CANCEL = 0x3
};
+/* clang-format on */
#define CQE_TYPE_PTR_MASK 0x3
uint64_t sqe_count = 0;
uint64_t cqe_count = 0;
-static struct io_uring_sqe *
-get_sqe(struct uring_task *task)
+static struct io_uring_sqe *get_sqe(struct uring_task *task)
{
struct io_uring_sqe *sqe;
-
+
assert_die(task, "invalid arguments");
sqe = io_uring_get_sqe(&cfg->uring->uring);
@@ -51,8 +52,7 @@ get_sqe(struct uring_task *task)
return sqe;
}
-void
-uring_task_refdump(struct uring_task *task)
+void uring_task_refdump(struct uring_task *task)
{
char buf[4096];
struct uring_task *tmp;
@@ -83,45 +83,43 @@ uring_task_refdump(struct uring_task *task)
memcpy(dst, tmp->name, strlen(tmp->name));
}
- info("%s (0x%p parent 0x%p free 0x%p fd %i ref %u)",
- buf, task, task->parent, task->free, task->fd,
- task->refcount);
+ info("%s (0x%p parent 0x%p free 0x%p fd %i ref %u)", buf, task,
+ task->parent, task->free, task->fd, task->refcount);
}
/*
* Similar to uring_task_put, but can be called from other tasks
* while the task is active.
*/
-void
-uring_task_destroy(struct uring_task *task)
+void uring_task_destroy(struct uring_task *task)
{
assert_return(task);
assert_return_silent(!task->dead);
- debug(DBG_UR, "task %s (%p), fd %i, refcount %u",
- task->name, task, task->fd, task->refcount);
+ debug(DBG_UR, "task %s (%p), fd %i, refcount %u", task->name, task,
+ task->fd, task->refcount);
if (task->fd >= 0) {
struct io_uring_sqe *sqe;
-
+
sqe = get_sqe(task);
io_uring_prep_cancel(sqe, task, 0);
- io_uring_sqe_set_data(sqe, (void *)((uintptr_t)task | CQE_TYPE_CANCEL));
+ io_uring_sqe_set_data(sqe, (void *)((uintptr_t)task |
+ CQE_TYPE_CANCEL));
}
task->dead = true;
uring_task_put(task);
}
-void
-uring_task_put(struct uring_task *task)
+void uring_task_put(struct uring_task *task)
{
struct uring_task *parent;
assert_return(task);
- debug(DBG_REF, "task %s (%p), refcount %u -> %u",
- task->name, task, task->refcount, task->refcount - 1);
+ debug(DBG_REF, "task %s (%p), refcount %u -> %u", task->name, task,
+ task->refcount, task->refcount - 1);
task->refcount--;
@@ -147,13 +145,12 @@ uring_task_put(struct uring_task *task)
}
}
-void
-uring_task_get(struct uring_task *task)
+void uring_task_get(struct uring_task *task)
{
assert_return(task);
- debug(DBG_REF, "task %s (%p), refcount %u -> %u",
- task->name, task, task->refcount, task->refcount + 1);
+ debug(DBG_REF, "task %s (%p), refcount %u -> %u", task->name, task,
+ task->refcount, task->refcount + 1);
if (task->refcount < 0)
error("Negative refcount!");
@@ -161,17 +158,16 @@ uring_task_get(struct uring_task *task)
task->refcount++;
}
-void
-uring_task_set_buf(struct uring_task *task, struct uring_task_buf *tbuf)
+void uring_task_set_buf(struct uring_task *task, struct uring_task_buf *tbuf)
{
assert_return(task && tbuf);
- debug(DBG_UR, "task %s (%p), buf %p, refcount %u",
- task->name, task, tbuf, task->refcount);
+ debug(DBG_UR, "task %s (%p), buf %p, refcount %u", task->name, task,
+ tbuf, task->refcount);
/* iov_len and msg_namelen are set at send/receive time */
tbuf->iov.iov_base = tbuf->buf;
- tbuf->msg.msg_name = &task->saddr.storage;
+ tbuf->msg.msg_name = &task->saddr.st;
tbuf->msg.msg_iov = &tbuf->iov;
tbuf->msg.msg_iovlen = 1;
tbuf->msg.msg_control = NULL;
@@ -180,24 +176,22 @@ uring_task_set_buf(struct uring_task *task, struct uring_task_buf *tbuf)
task->tbuf = tbuf;
}
-void
-uring_task_set_fd(struct uring_task *task, int fd)
+void uring_task_set_fd(struct uring_task *task, int fd)
{
assert_return(task);
- debug(DBG_UR, "task %s (%p), fd %i, refcount %u",
- task->name, task, fd, task->refcount);
+ debug(DBG_UR, "task %s (%p), fd %i, refcount %u", task->name, task, fd,
+ task->refcount);
task->fd = fd;
}
-void
-uring_task_close_fd(struct uring_task *task)
+void uring_task_close_fd(struct uring_task *task)
{
assert_return(task);
- debug(DBG_UR, "task %s (%p), fd %i, refcount %u",
- task->name, task, task->fd, task->refcount);
+ debug(DBG_UR, "task %s (%p), fd %i, refcount %u", task->name, task,
+ task->fd, task->refcount);
if (task->fd < 0)
return;
@@ -206,17 +200,16 @@ uring_task_close_fd(struct uring_task *task)
task->fd = -1;
}
-struct uring_task *
-uring_parent()
+struct uring_task *uring_parent()
{
assert_die(cfg->uring, "invalid arguments");
return &cfg->uring->task;
}
-void
-uring_task_init(struct uring_task *task, const char *name,
- struct uring_task *parent, void (*free)(struct uring_task *))
+void uring_task_init(struct uring_task *task, const char *name,
+ struct uring_task *parent,
+ void (*free)(struct uring_task *))
{
static bool first = true;
@@ -236,38 +229,37 @@ uring_task_init(struct uring_task *task, const char *name,
task->tbuf = NULL;
if (task->parent) {
- debug(DBG_REF, "task %s (%p), refcount %u, "
+ debug(DBG_REF,
+ "task %s (%p), refcount %u, "
"getting parent %s (%p), refcount %u",
- task->name, task, task->refcount,
- task->parent->name, task->parent, task->parent->refcount);
+ task->name, task, task->refcount, task->parent->name,
+ task->parent, task->parent->refcount);
uring_task_get(task->parent);
}
}
-void
-uring_close(struct uring_task *task, int fd)
+void uring_close(struct uring_task *task, int fd)
{
struct io_uring_sqe *sqe;
assert_return(task && fd >= 0);
- debug(DBG_UR, "task %s (%p), fd %i, refcount %u",
- task->name, task, task->fd, task->refcount);
+ debug(DBG_UR, "task %s (%p), fd %i, refcount %u", task->name, task,
+ task->fd, task->refcount);
- sqe = get_sqe(task);
+ sqe = get_sqe(task);
io_uring_prep_close(sqe, fd);
io_uring_sqe_set_data(sqe, (void *)((uintptr_t)task | CQE_TYPE_CLOSE));
}
-static void
-uring_tbuf_write_cb(struct uring_task *task, int res)
+static void uring_tbuf_write_cb(struct uring_task *task, int res)
{
int r;
assert_return(task && task->tbuf && task->final_cb);
- debug(DBG_UR, "task %s (%p), fd %i, refcount %u",
- task->name, task, task->fd, task->refcount);
+ debug(DBG_UR, "task %s (%p), fd %i, refcount %u", task->name, task,
+ task->fd, task->refcount);
if (res < 0) {
r = res;
@@ -282,52 +274,51 @@ uring_tbuf_write_cb(struct uring_task *task, int res)
}
uring_write(task, task->tbuf->buf + task->tbuf->done,
- task->tbuf->len - task->tbuf->done,
- uring_tbuf_write_cb);
+ task->tbuf->len - task->tbuf->done, uring_tbuf_write_cb);
return;
finished:
task->final_cb(task, r);
}
-void
-uring_tbuf_write(struct uring_task *task, utask_cb_t final_cb)
+void uring_tbuf_write(struct uring_task *task, utask_cb_t final_cb)
{
- assert_return(task && task->fd >= 0 && task->tbuf && task->tbuf->len > 0);
+ assert_return(task && task->fd >= 0 && task->tbuf &&
+ task->tbuf->len > 0);
- debug(DBG_UR, "task %s (%p), fd %i, refcount %u",
- task->name, task, task->fd, task->refcount);
+ debug(DBG_UR, "task %s (%p), fd %i, refcount %u", task->name, task,
+ task->fd, task->refcount);
task->tbuf->done = 0;
task->final_cb = final_cb;
- uring_write(task, &task->tbuf->buf, task->tbuf->len, uring_tbuf_write_cb);
+ uring_write(task, &task->tbuf->buf, task->tbuf->len,
+ uring_tbuf_write_cb);
}
-void
-uring_write(struct uring_task *task, void *buf, size_t len, utask_cb_t cb)
+void uring_write(struct uring_task *task, void *buf, size_t len, utask_cb_t cb)
{
struct io_uring_sqe *sqe;
assert_return(task && buf && len > 0 && cb && task->fd >= 0);
- debug(DBG_UR, "task %s (%p), fd %i, refcount %u",
- task->name, task, task->fd, task->refcount);
+ debug(DBG_UR, "task %s (%p), fd %i, refcount %u", task->name, task,
+ task->fd, task->refcount);
- sqe = get_sqe(task);
+ sqe = get_sqe(task);
task->cb = cb;
io_uring_prep_write(sqe, task->fd, buf, len, 0);
io_uring_sqe_set_data(sqe, task);
}
-static void
-uring_tbuf_read_until_cb(struct uring_task *task, int res)
+static void uring_tbuf_read_until_cb(struct uring_task *task, int res)
{
int r;
- assert_return(task && task->tbuf && task->final_cb && task->is_complete_cb);
+ assert_return(task && task->tbuf && task->final_cb &&
+ task->is_complete_cb);
- debug(DBG_UR, "task %s (%p), fd %i, refcount %u",
- task->name, task, task->fd, task->refcount);
+ debug(DBG_UR, "task %s (%p), fd %i, refcount %u", task->name, task,
+ task->fd, task->refcount);
if (res < 0) {
r = res;
@@ -359,14 +350,14 @@ finished:
task->final_cb(task, r);
}
-void
-uring_tbuf_read_until(struct uring_task *task,
- rutask_cb_t is_complete_cb, utask_cb_t final_cb)
+void uring_tbuf_read_until(struct uring_task *task, rutask_cb_t is_complete_cb,
+ utask_cb_t final_cb)
{
- assert_return(task && task->fd >= 0 && task->tbuf && is_complete_cb && final_cb);
+ assert_return(task && task->fd >= 0 && task->tbuf && is_complete_cb &&
+ final_cb);
- debug(DBG_UR, "task %s (%p), fd %i, refcount %u",
- task->name, task, task->fd, task->refcount);
+ debug(DBG_UR, "task %s (%p), fd %i, refcount %u", task->name, task,
+ task->fd, task->refcount);
task->tbuf->len = 0;
task->is_complete_cb = is_complete_cb;
@@ -375,8 +366,7 @@ uring_tbuf_read_until(struct uring_task *task,
uring_tbuf_read_until_cb);
}
-static int
-uring_tbuf_eof(struct uring_task *task, int res)
+static int uring_tbuf_eof(struct uring_task *task, int res)
{
assert_return(task && task->tbuf, -EINVAL);
assert_task_alive_or(DBG_UR, task, return -EINTR);
@@ -392,17 +382,14 @@ uring_tbuf_eof(struct uring_task *task, int res)
return 1;
}
-void
-uring_tbuf_read_until_eof(struct uring_task *task,
- utask_cb_t final_cb)
+void uring_tbuf_read_until_eof(struct uring_task *task, utask_cb_t final_cb)
{
assert_return(task && task->tbuf && final_cb);
uring_tbuf_read_until(task, uring_tbuf_eof, final_cb);
}
-static int
-uring_tbuf_have_data(struct uring_task *task, int res)
+static int uring_tbuf_have_data(struct uring_task *task, int res)
{
assert_return(task, -EINVAL);
@@ -412,23 +399,22 @@ uring_tbuf_have_data(struct uring_task *task, int res)
return 1;
}
-void
-uring_tbuf_read(struct uring_task *task, utask_cb_t final_cb)
+void uring_tbuf_read(struct uring_task *task, utask_cb_t final_cb)
{
assert_return(task && final_cb);
uring_tbuf_read_until(task, uring_tbuf_have_data, final_cb);
}
-void
-uring_read_offset(struct uring_task *task, void *buf, size_t len, off_t offset, utask_cb_t cb)
+void uring_read_offset(struct uring_task *task, void *buf, size_t len,
+ off_t offset, utask_cb_t cb)
{
struct io_uring_sqe *sqe;
assert_return(task && buf && len > 0 && task->fd >= 0);
- debug(DBG_UR, "task %s (%p), fd %i, refcount %u",
- task->name, task, task->fd, task->refcount);
+ debug(DBG_UR, "task %s (%p), fd %i, refcount %u", task->name, task,
+ task->fd, task->refcount);
sqe = get_sqe(task);
task->cb = cb;
@@ -436,15 +422,14 @@ uring_read_offset(struct uring_task *task, void *buf, size_t len, off_t offset,
io_uring_sqe_set_data(sqe, task);
}
-void
-uring_openat(struct uring_task *task, const char *path, utask_cb_t cb)
+void uring_openat(struct uring_task *task, const char *path, utask_cb_t cb)
{
struct io_uring_sqe *sqe;
-
+
assert_return(task && !empty_str(path) && cb);
- debug(DBG_UR, "task %s (%p), fd %i, refcount %u",
- task->name, task, task->fd, task->refcount);
+ debug(DBG_UR, "task %s (%p), fd %i, refcount %u", task->name, task,
+ task->fd, task->refcount);
sqe = get_sqe(task);
task->cb = cb;
@@ -452,15 +437,14 @@ uring_openat(struct uring_task *task, const char *path, utask_cb_t cb)
io_uring_sqe_set_data(sqe, task);
}
-void
-uring_tbuf_recvmsg(struct uring_task *task, utask_cb_t cb)
+void uring_tbuf_recvmsg(struct uring_task *task, utask_cb_t cb)
{
struct io_uring_sqe *sqe;
assert_return(task && task->fd >= 0 && task->tbuf && cb);
- debug(DBG_UR, "task %s (%p), fd %i, refcount %u",
- task->name, task, task->fd, task->refcount);
+ debug(DBG_UR, "task %s (%p), fd %i, refcount %u", task->name, task,
+ task->fd, task->refcount);
sqe = get_sqe(task);
task->tbuf->done = 0;
@@ -472,15 +456,14 @@ uring_tbuf_recvmsg(struct uring_task *task, utask_cb_t cb)
io_uring_sqe_set_data(sqe, task);
}
-void
-uring_tbuf_sendmsg(struct uring_task *task, utask_cb_t cb)
+void uring_tbuf_sendmsg(struct uring_task *task, utask_cb_t cb)
{
struct io_uring_sqe *sqe;
assert_return(task && task->fd >= 0 && task->tbuf && cb);
- debug(DBG_UR, "task %s (%p), fd %i, refcount %u",
- task->name, task, task->fd, task->refcount);
+ debug(DBG_UR, "task %s (%p), fd %i, refcount %u", task->name, task,
+ task->fd, task->refcount);
sqe = get_sqe(task);
task->tbuf->done = 0;
@@ -491,44 +474,43 @@ uring_tbuf_sendmsg(struct uring_task *task, utask_cb_t cb)
io_uring_sqe_set_data(sqe, task);
}
-void
-uring_connect(struct uring_task *task, struct saddr *saddr, utask_cb_t cb)
+void uring_connect(struct uring_task *task, struct saddr *saddr, utask_cb_t cb)
{
struct io_uring_sqe *sqe;
assert_return(task && task->fd >= 0 && saddr && cb);
- debug(DBG_UR, "task %s (%p), fd %i, refcount %u",
- task->name, task, task->fd, task->refcount);
+ debug(DBG_UR, "task %s (%p), fd %i, refcount %u", task->name, task,
+ task->fd, task->refcount);
sqe = get_sqe(task);
task->cb = cb;
- io_uring_prep_connect(sqe, task->fd, (struct sockaddr *)&saddr->storage, saddr->addrlen);
+ io_uring_prep_connect(sqe, task->fd, (struct sockaddr *)&saddr->st,
+ saddr->addrlen);
io_uring_sqe_set_data(sqe, task);
}
-void
-uring_accept(struct uring_task *task, struct saddr *saddr, utask_cb_t cb)
+void uring_accept(struct uring_task *task, struct saddr *saddr, utask_cb_t cb)
{
struct io_uring_sqe *sqe;
assert_return(task && task->fd >= 0 && saddr && cb);
- debug(DBG_UR, "task %s (%p), fd %i, refcount %u",
- task->name, task, task->fd, task->refcount);
+ debug(DBG_UR, "task %s (%p), fd %i, refcount %u", task->name, task,
+ task->fd, task->refcount);
sqe = get_sqe(task);
- saddr->addrlen = sizeof(saddr->storage);
+ saddr->addrlen = sizeof(saddr->st);
task->cb = cb;
- io_uring_prep_accept(sqe, task->fd, (struct sockaddr *)&saddr->storage, &saddr->addrlen, SOCK_CLOEXEC);
+ io_uring_prep_accept(sqe, task->fd, (struct sockaddr *)&saddr->st,
+ &saddr->addrlen, SOCK_CLOEXEC);
io_uring_sqe_set_data(sqe, task);
}
-void
-uring_splice(struct uring_task *task, int fd_in, int fd_out, utask_cb_t cb)
+void uring_splice(struct uring_task *task, int fd_in, int fd_out, utask_cb_t cb)
{
struct io_uring_sqe *sqe;
-
+
assert_return(task && fd_in >= 0 && fd_out >= 0 && cb);
debug(DBG_UR, "task %s (%p), fd_in %i, fd_out %i, refcount %u",
@@ -540,15 +522,14 @@ uring_splice(struct uring_task *task, int fd_in, int fd_out, utask_cb_t cb)
io_uring_sqe_set_data(sqe, task);
}
-void
-uring_poll(struct uring_task *task, short poll_mask, utask_cb_t cb)
+void uring_poll(struct uring_task *task, short poll_mask, utask_cb_t cb)
{
struct io_uring_sqe *sqe;
-
+
assert_return(task && task->fd >= 0 && poll_mask && cb);
- debug(DBG_UR, "task %s (%p), fd %i, refcount %u",
- task->name, task, task->fd, task->refcount);
+ debug(DBG_UR, "task %s (%p), fd %i, refcount %u", task->name, task,
+ task->fd, task->refcount);
sqe = get_sqe(task);
task->cb = cb;
@@ -556,11 +537,10 @@ uring_poll(struct uring_task *task, short poll_mask, utask_cb_t cb)
io_uring_sqe_set_data(sqe, task);
}
-void
-uring_poll_cancel(struct uring_task *task)
+void uring_poll_cancel(struct uring_task *task)
{
struct io_uring_sqe *sqe;
-
+
assert_return(task);
if (task->fd < 0) {
@@ -568,54 +548,51 @@ uring_poll_cancel(struct uring_task *task)
return;
}
- debug(DBG_UR, "task %s (%p), fd %i, refcount %u",
- task->name, task, task->fd, task->refcount);
+ debug(DBG_UR, "task %s (%p), fd %i, refcount %u", task->name, task,
+ task->fd, task->refcount);
sqe = get_sqe(task);
task->dead = true;
io_uring_prep_poll_remove(sqe, task);
- io_uring_sqe_set_data(sqe, (void *)((uintptr_t)task | CQE_TYPE_POLL_CANCEL));
+ io_uring_sqe_set_data(sqe,
+ (void *)((uintptr_t)task | CQE_TYPE_POLL_CANCEL));
}
-static void
-uring_free(struct uring_task *task)
+static void uring_free(struct uring_task *task)
{
struct uring_ev *uring = container_of(task, struct uring_ev, task);
assert_return(task);
- debug(DBG_UR, "task %s (%p), fd %i, refcount %u",
- task->name, task, task->fd, task->refcount);
+ debug(DBG_UR, "task %s (%p), fd %i, refcount %u", task->name, task,
+ task->fd, task->refcount);
io_uring_queue_exit(&uring->uring);
cfg->uring = NULL;
xfree(uring);
}
-void
-uring_refdump()
+void uring_refdump()
{
assert_return(cfg->uring);
uring_task_refdump(&cfg->uring->task);
}
-void
-uring_delete()
+void uring_delete()
{
struct uring_task *task;
assert_return(cfg->uring);
task = &cfg->uring->task;
- debug(DBG_UR, "task %s (%p), fd %i, refcount %u",
- task->name, task, task->fd, task->refcount);
+ debug(DBG_UR, "task %s (%p), fd %i, refcount %u", task->name, task,
+ task->fd, task->refcount);
uring_task_put(task);
}
-static void
-uring_splice_test_cb(struct uring_task *task, int res)
+static void uring_splice_test_cb(struct uring_task *task, int res)
{
struct uring_ev *uring = container_of(task, struct uring_ev, task);
@@ -634,12 +611,11 @@ uring_splice_test_cb(struct uring_task *task, int res)
debug(DBG_UR, "splice supported");
} else if (res == -EINVAL)
debug(DBG_UR, "splice not supported");
- else
+ else
error("splice check failed: %i\n", res);
}
-void
-uring_init()
+void uring_init()
{
struct uring_ev *uring;
@@ -649,7 +625,8 @@ uring_init()
if (!uring)
die("malloc: %m");
- if (io_uring_queue_init_params(4096, &uring->uring, &uring->uring_params) < 0)
+ if (io_uring_queue_init_params(4096, &uring->uring,
+ &uring->uring_params) < 0)
die("io_uring_queue_init_params");
debug(DBG_UR, "uring initialized, features: 0x%08x",
@@ -665,28 +642,23 @@ uring_init()
uring->tfd = open("/dev/null", O_RDONLY | O_CLOEXEC | O_NOCTTY);
if (uring->tfd < 0)
die("open(\"/dev/null\"): %m");
- uring_splice(&uring->task, uring->tfd, uring->pipe[PIPE_WR], uring_splice_test_cb);
+ uring_splice(&uring->task, uring->tfd, uring->pipe[PIPE_WR],
+ uring_splice_test_cb);
}
-static inline void
-uring_print_cqe(const char *type, struct uring_task *task,
- struct io_uring_cqe *cqe)
+static inline void uring_print_cqe(const char *type, struct uring_task *task,
+ struct io_uring_cqe *cqe)
{
assert_return(!empty_str(type) && task && cqe);
- debug(DBG_UR, "got CQE "
+ debug(DBG_UR,
+ "got CQE "
"(type: %s, res: %i (%s), task: %s (%p), fd: %i, cb: %p)",
- type,
- cqe->res,
- cqe->res < 0 ? strerror(-cqe->res) : "ok",
- task->name ? task->name : "<none>",
- task,
- task->fd,
- task->cb);
+ type, cqe->res, cqe->res < 0 ? strerror(-cqe->res) : "ok",
+ task->name ? task->name : "<none>", task, task->fd, task->cb);
}
-void
-uring_event_loop()
+void uring_event_loop()
{
while (true) {
struct io_uring_cqe *cqe;
@@ -703,7 +675,8 @@ uring_event_loop()
}
nr = 0;
- io_uring_for_each_cqe(&cfg->uring->uring, head, cqe) {
+ io_uring_for_each_cqe(&cfg->uring->uring, head, cqe)
+ {
struct uring_task *task = io_uring_cqe_get_data(cqe);
bool do_cb;
enum cqe_type cqe_type;
@@ -755,4 +728,3 @@ uring_event_loop()
io_uring_cq_advance(&cfg->uring->uring, nr);
}
}
-
diff --git a/minecproxy/uring.h b/minecproxy/uring.h
index 9c33104..c465904 100644
--- a/minecproxy/uring.h
+++ b/minecproxy/uring.h
@@ -30,18 +30,18 @@ void uring_tbuf_write(struct uring_task *task, utask_cb_t final_cb);
void uring_write(struct uring_task *task, void *buf, size_t len, utask_cb_t cb);
-void uring_tbuf_read_until(struct uring_task *task,
- rutask_cb_t is_complete_cb, utask_cb_t final_cb);
+void uring_tbuf_read_until(struct uring_task *task, rutask_cb_t is_complete_cb,
+ utask_cb_t final_cb);
void uring_tbuf_read_until_eof(struct uring_task *task, utask_cb_t final_cb);
void uring_tbuf_read(struct uring_task *task, utask_cb_t final_cb);
-void uring_read_offset(struct uring_task *task, void *buf,
- size_t len, off_t offset, utask_cb_t cb);
+void uring_read_offset(struct uring_task *task, void *buf, size_t len,
+ off_t offset, utask_cb_t cb);
-static inline void
-uring_read(struct uring_task *task, void *buf, size_t len, utask_cb_t cb)
+static inline void uring_read(struct uring_task *task, void *buf, size_t len,
+ utask_cb_t cb)
{
uring_read_offset(task, buf, len, 0, cb);
}
@@ -56,7 +56,8 @@ void uring_connect(struct uring_task *task, struct saddr *saddr, utask_cb_t cb);
void uring_accept(struct uring_task *task, struct saddr *saddr, utask_cb_t cb);
-void uring_splice(struct uring_task *task, int fd_in, int fd_out, utask_cb_t cb);
+void uring_splice(struct uring_task *task, int fd_in, int fd_out,
+ utask_cb_t cb);
void uring_poll(struct uring_task *task, short poll_mask, utask_cb_t cb);
diff --git a/shared/ansi-colors.h b/shared/ansi-colors.h
index ba89c46..8294f2d 100644
--- a/shared/ansi-colors.h
+++ b/shared/ansi-colors.h
@@ -1,12 +1,12 @@
#ifndef fooansicolorshfoo
#define fooansicolorshfoo
-#define ANSI_RED "\x1B[0;31m"
-#define ANSI_GREEN "\x1B[0;32m"
-#define ANSI_YELLOW "\x1B[0;33m"
-#define ANSI_BLUE "\x1B[0;34m"
-#define ANSI_MAGENTA "\x1B[0;35m"
-#define ANSI_GREY "\x1B[0;38;5;245m"
-#define ANSI_NORMAL "\x1B[0m"
+#define ANSI_RED "\x1B[0;31m"
+#define ANSI_GREEN "\x1B[0;32m"
+#define ANSI_YELLOW "\x1B[0;33m"
+#define ANSI_BLUE "\x1B[0;34m"
+#define ANSI_MAGENTA "\x1B[0;35m"
+#define ANSI_GREY "\x1B[0;38;5;245m"
+#define ANSI_NORMAL "\x1B[0m"
#endif
diff --git a/shared/config-parser.c b/shared/config-parser.c
index 386d5a2..13b26e1 100644
--- a/shared/config-parser.c
+++ b/shared/config-parser.c
@@ -13,8 +13,7 @@
#include "config-parser.h"
#include "config.h"
-static void
-eat_whitespace_and_comments(char **pos)
+static void eat_whitespace_and_comments(char **pos)
{
assert_return(pos && *pos);
@@ -30,8 +29,7 @@ eat_whitespace_and_comments(char **pos)
}
}
-static char *
-get_line(char **pos)
+static char *get_line(char **pos)
{
char *begin, *end;
@@ -63,9 +61,8 @@ get_line(char **pos)
return begin;
}
-static bool
-dnslookup(const char *name, uint16_t port, struct cfg_value *rvalue,
- unsigned *naddrs, bool async)
+static bool dnslookup(const char *name, uint16_t port, struct cfg_value *rvalue,
+ unsigned *naddrs, bool async)
{
struct sockaddr_in *in4;
struct sockaddr_in6 *in6;
@@ -77,7 +74,9 @@ dnslookup(const char *name, uint16_t port, struct cfg_value *rvalue,
bool rv = false;
int r;
- assert_return(!empty_str(name) && strlen(name) < sizeof(dns->name) && port > 0 && rvalue, false);
+ assert_return(!empty_str(name) && strlen(name) < sizeof(dns->name) &&
+ port > 0 && rvalue,
+ false);
if (async) {
rvalue->type = CFG_VAL_TYPE_ASYNC_ADDRS;
@@ -94,7 +93,7 @@ dnslookup(const char *name, uint16_t port, struct cfg_value *rvalue,
debug(DBG_DNS, "doing sync DNS lookup of %s", name);
}
- sprintf(dns->name, "%s", name);
+ sprintf(dns->name, "%s", name);
sprintf(dns->port, "%" PRIu16, port);
dns->req.ai_family = AF_UNSPEC;
@@ -114,7 +113,8 @@ dnslookup(const char *name, uint16_t port, struct cfg_value *rvalue,
r = getaddrinfo_a(mode, gcbs, ARRAY_SIZE(gcbs), &dns->sev);
if (r != 0) {
- error("getaddrinfo(%s:%" PRIu16 "): %s", name, port, gai_strerror(r));
+ error("getaddrinfo(%s:%" PRIu16 "): %s", name, port,
+ gai_strerror(r));
goto out;
}
@@ -136,7 +136,8 @@ dnslookup(const char *name, uint16_t port, struct cfg_value *rvalue,
switch (ai->ai_family) {
case AF_INET:
in4 = (struct sockaddr_in *)ai->ai_addr;
- saddr_set_ipv4(saddr, in4->sin_addr.s_addr, in4->sin_port);
+ saddr_set_ipv4(saddr, in4->sin_addr.s_addr,
+ in4->sin_port);
debug(DBG_CFG, "addrstr: %s", saddr->addrstr);
list_add(&saddr->list, &rvalue->saddrs);
(*naddrs)++;
@@ -165,8 +166,7 @@ out:
return rv;
}
-bool
-strtosockaddrs(const char *str, struct cfg_value *rvalue, bool async)
+bool strtosockaddrs(const char *str, struct cfg_value *rvalue, bool async)
{
struct saddr *saddr;
uint16_t port;
@@ -235,7 +235,8 @@ strtosockaddrs(const char *str, struct cfg_value *rvalue, bool async)
} else if ((tmp = strchr(str, ':'))) {
/* IPv4, a.b.c.d:p or IPv4/6 hostname:p */
- debug(DBG_CFG, "attempting to parse IPv4 addr or hostname (%s)", str);
+ debug(DBG_CFG, "attempting to parse IPv4 addr or hostname (%s)",
+ str);
*tmp = '\0';
tmp++;
@@ -247,15 +248,18 @@ strtosockaddrs(const char *str, struct cfg_value *rvalue, bool async)
goto error;
if (inet_pton(AF_INET, str, &saddr->in4.sin_addr) > 0) {
- debug(DBG_CFG, "got an IPv4:port (%s:%" PRIu16 ")", str, port);
- saddr_set_ipv4(saddr, saddr->in4.sin_addr.s_addr, htons(port));
+ debug(DBG_CFG, "got an IPv4:port (%s:%" PRIu16 ")", str,
+ port);
+ saddr_set_ipv4(saddr, saddr->in4.sin_addr.s_addr,
+ htons(port));
list_add(&saddr->list, list);
naddrs++;
goto success;
- }
+ }
xfree(saddr);
- debug(DBG_CFG, "maybe got a hostname:port (%s:%" PRIu16 ")", str, port);
+ debug(DBG_CFG, "maybe got a hostname:port (%s:%" PRIu16 ")",
+ str, port);
if (!dnslookup(str, port, rvalue, &naddrs, async))
goto error;
@@ -318,16 +322,16 @@ error:
}
/* Returns true if there's data left to parse in buf */
-bool
-config_parse_line(const char *filename, char **buf,
- struct cfg_key_value_map *kvmap, int *rkey,
- const char **rkeyname, struct cfg_value *rvalue,
- bool async_dns)
+bool config_parse_line(const char *filename, char **buf,
+ struct cfg_key_value_map *kvmap, int *rkey,
+ const char **rkeyname, struct cfg_value *rvalue,
+ bool async_dns)
{
char *line, *tmp, *key;
int i;
- assert_return(buf && *buf && kvmap && rkey && rkeyname && rvalue, false);
+ assert_return(buf && *buf && kvmap && rkey && rkeyname && rvalue,
+ false);
line = get_line(buf);
if (!line)
@@ -370,7 +374,6 @@ config_parse_line(const char *filename, char **buf,
continue;
switch (kvmap[i].value_type) {
-
case CFG_VAL_TYPE_STRING:
rvalue->type = CFG_VAL_TYPE_STRING;
rvalue->str = tmp;
@@ -425,7 +428,8 @@ config_parse_line(const char *filename, char **buf,
if (strcaseeq(tmp, "yes") || strcaseeq(tmp, "true")) {
rvalue->type = CFG_VAL_TYPE_BOOL;
rvalue->boolean = true;
- } else if (strcaseeq(tmp, "no") || strcaseeq(tmp, "false")) {
+ } else if (strcaseeq(tmp, "no") ||
+ strcaseeq(tmp, "false")) {
rvalue->type = CFG_VAL_TYPE_BOOL;
rvalue->boolean = false;
} else {
@@ -454,7 +458,8 @@ config_parse_line(const char *filename, char **buf,
}
error:
- /* FIXME: the line is already mangled here, a line number would be nice */
+ /* FIXME: the line is already mangled here, a line number would be nice
+ */
error("%s: invalid config line: %s", filename, line);
rvalue->type = CFG_VAL_TYPE_INVALID;
*rkey = 0;
@@ -462,8 +467,7 @@ error:
return true;
}
-bool
-config_parse_header(const char *title, char **buf)
+bool config_parse_header(const char *title, char **buf)
{
char *line;
@@ -481,8 +485,7 @@ config_parse_header(const char *title, char **buf)
return false;
}
-bool
-is_valid_server_config_filename(struct dirent *dent, const char *filename)
+bool is_valid_server_config_filename(struct dirent *dent, const char *filename)
{
const char *suffix;
@@ -512,4 +515,3 @@ is_valid_server_config_filename(struct dirent *dent, const char *filename)
return true;
}
-
diff --git a/shared/config-parser.h b/shared/config-parser.h
index 7c5703e..771ece1 100644
--- a/shared/config-parser.h
+++ b/shared/config-parser.h
@@ -18,7 +18,7 @@ enum cfg_value_type {
struct dns_async;
-typedef void (dns_cb_t)(struct dns_async *);
+typedef void(dns_cb_t)(struct dns_async *);
struct dns_async {
char name[FQDN_STR_LEN + 1];
@@ -51,9 +51,9 @@ struct cfg_value {
bool strtosockaddrs(const char *str, struct cfg_value *rvalue, bool async);
bool config_parse_line(const char *filename, char **buf,
- struct cfg_key_value_map *kvmap,
- int *rkey, const char **rkeyname,
- struct cfg_value *rvalue, bool async_dns);
+ struct cfg_key_value_map *kvmap, int *rkey,
+ const char **rkeyname, struct cfg_value *rvalue,
+ bool async_dns);
bool config_parse_header(const char *title, char **buf);
diff --git a/shared/debug.h b/shared/debug.h
index 6f1a054..2b1eba0 100644
--- a/shared/debug.h
+++ b/shared/debug.h
@@ -2,6 +2,7 @@
#define foodebughfoo
/* FIXME: Should these be shared? */
+/* clang-format off */
enum debug_lvl {
DBG_ERROR = (0x1 << 1),
DBG_INFO = (0x1 << 2),
@@ -21,70 +22,70 @@ enum debug_lvl {
DBG_DNS = (0x1 << 16),
DBG_TIMER = (0x1 << 17),
};
+/* clang-format on */
-static inline bool
-debug_enabled(enum debug_lvl lvl)
+static inline bool debug_enabled(enum debug_lvl lvl)
{
return !!(lvl & debug_mask);
}
-#define __ifdebug(lvl, fmt, ...) \
- do { \
- if (debug_enabled((lvl))) \
- __debug((lvl), fmt "\n"__VA_OPT__(,) __VA_ARGS__); \
+#define __ifdebug(lvl, fmt, ...) \
+ do { \
+ if (debug_enabled((lvl))) \
+ __debug((lvl), fmt "\n"__VA_OPT__(, )__VA_ARGS__); \
} while (0)
-#define debug(lvl, fmt, ...) __ifdebug((lvl), "%s:%s:%i: " fmt, \
- __FILE__, __func__, __LINE__ \
- __VA_OPT__(,) __VA_ARGS__)
-#define verbose(fmt, ...) __ifdebug(DBG_VERBOSE, fmt, __VA_ARGS__)
-#define info(fmt, ...) __ifdebug(DBG_INFO, fmt, __VA_ARGS__)
-#define error(fmt, ...) __ifdebug(DBG_ERROR, "%s:%s:%i: " fmt, \
- __FILE__, __func__, __LINE__ \
- __VA_OPT__(,) __VA_ARGS__)
+#define debug(lvl, fmt, ...) \
+ __ifdebug((lvl), "%s:%s:%i: " fmt, __FILE__, __func__, \
+ __LINE__ __VA_OPT__(, ) __VA_ARGS__)
+#define verbose(fmt, ...) __ifdebug(DBG_VERBOSE, fmt, __VA_ARGS__)
+#define info(fmt, ...) __ifdebug(DBG_INFO, fmt, __VA_ARGS__)
+#define error(fmt, ...) \
+ __ifdebug(DBG_ERROR, "%s:%s:%i: " fmt, __FILE__, __func__, \
+ __LINE__ __VA_OPT__(, ) __VA_ARGS__)
-#define die(fmt, ...) \
- __die("%s:%s:%i: " fmt "\n", \
- __FILE__, __func__, __LINE__ \
- __VA_OPT__(,) __VA_ARGS__)
+#define die(fmt, ...) \
+ __die("%s:%s:%i: " fmt "\n", __FILE__, __func__, \
+ __LINE__ __VA_OPT__(, ) __VA_ARGS__)
-#define assert_log(expr, msg) \
- ((expr) ? \
- (true) : \
- (__debug(DBG_ERROR, "%s:%s:%i: assertion \"" msg "\" failed\n", \
- __FILE__, __func__, __LINE__), false))
+#define assert_log(expr, msg) \
+ ((expr) ? (true) : \
+ (__debug(DBG_ERROR, \
+ "%s:%s:%i: assertion \"" msg "\" failed\n", \
+ __FILE__, __func__, __LINE__), \
+ false))
-#define assert_return(expr, ...) \
- do { \
- if (!assert_log(expr, #expr)) \
- return __VA_ARGS__; \
+#define assert_return(expr, ...) \
+ do { \
+ if (!assert_log(expr, #expr)) \
+ return __VA_ARGS__; \
} while (0)
-#define assert_return_silent(expr, ...) \
- do { \
- if (!(expr)) \
- return __VA_ARGS__; \
+#define assert_return_silent(expr, ...) \
+ do { \
+ if (!(expr)) \
+ return __VA_ARGS__; \
} while (0)
-#define assert_die(expr, msg) \
- do { \
- if (!assert_log(expr, #expr)) \
- die(msg); \
+#define assert_die(expr, msg) \
+ do { \
+ if (!assert_log(expr, #expr)) \
+ die(msg); \
} while (0)
-#define assert_task_alive_or(lvl, t, cmd) \
-do { \
- if (!(t)) { \
- error("invalid task"); \
- cmd; \
- } \
- \
- if ((t)->dead) { \
- debug((lvl), "task dead"); \
- cmd; \
- } \
-} while(0)
+#define assert_task_alive_or(lvl, t, cmd) \
+ do { \
+ if (!(t)) { \
+ error("invalid task"); \
+ cmd; \
+ } \
+ \
+ if ((t)->dead) { \
+ debug((lvl), "task dead"); \
+ cmd; \
+ } \
+ } while (0)
-#define assert_task_alive(lvl, t) assert_task_alive_or((lvl), (t), return)
+#define assert_task_alive(lvl, t) assert_task_alive_or((lvl), (t), return )
#endif
diff --git a/shared/external.h b/shared/external.h
index beba93a..738e460 100644
--- a/shared/external.h
+++ b/shared/external.h
@@ -9,7 +9,8 @@ void *__zmalloc(const char *fn, int line, size_t s) _malloc_ _alloc_(3);
char *__xstrdup(const char *fn, int line, const char *s) _malloc_;
#define xstrndup(s, n) __xstrndup(__func__, __LINE__, s, n)
-char *__xstrndup(const char *fn, int line, const char *s, size_t n) _malloc_ _alloc_(4);
+char *__xstrndup(const char *fn, int line, const char *s, size_t n) _malloc_
+ _alloc_(4);
#define xfree(s) __xfree(__func__, __LINE__, s)
void __xfree(const char *fn, int line, void *ptr);
diff --git a/shared/list.h b/shared/list.h
index fcd005a..25f4219 100644
--- a/shared/list.h
+++ b/shared/list.h
@@ -17,15 +17,17 @@ struct list_head {
};
#define WRITE_ONCE(a, b) ((a) = (b))
-#define READ_ONCE(a) (a)
-#define LIST_POISON1 ((void *) 0x100)
-#define LIST_POISON2 ((void *) 0x122)
+#define READ_ONCE(a) (a)
+#define LIST_POISON1 ((void *)0x100)
+#define LIST_POISON2 ((void *)0x122)
-#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
+#define offsetof(TYPE, MEMBER) ((size_t) & ((TYPE *)0)->MEMBER)
-#define container_of(ptr, type, member) __extension__ ({ \
- const typeof( ((type *)0)->member ) *__mptr = (ptr); \
- (type *)( (char *)__mptr - offsetof(type,member) );})
+#define container_of(ptr, type, member) \
+ __extension__({ \
+ const typeof(((type *)0)->member) *__mptr = (ptr); \
+ (type *)((char *)__mptr - offsetof(type, member)); \
+ })
/* End of added stuff */
@@ -39,10 +41,12 @@ struct list_head {
* using the generic single-entry routines.
*/
-#define LIST_HEAD_INIT(name) { &(name), &(name) }
+#define LIST_HEAD_INIT(name) \
+ { \
+ &(name), &(name) \
+ }
-#define LIST_HEAD(name) \
- struct list_head name = LIST_HEAD_INIT(name)
+#define LIST_HEAD(name) struct list_head name = LIST_HEAD_INIT(name)
/**
* INIT_LIST_HEAD - Initialize a list_head structure
@@ -58,14 +62,13 @@ static inline void INIT_LIST_HEAD(struct list_head *list)
}
#ifdef CONFIG_DEBUG_LIST
-extern bool __list_add_valid(struct list_head *new,
- struct list_head *prev,
- struct list_head *next);
+extern bool __list_add_valid(struct list_head *new, struct list_head *prev,
+ struct list_head *next);
extern bool __list_del_entry_valid(struct list_head *entry);
#else
static inline bool __list_add_valid(_unused_ struct list_head *new,
- _unused_ struct list_head *prev,
- _unused_ struct list_head *next)
+ _unused_ struct list_head *prev,
+ _unused_ struct list_head *next)
{
return true;
}
@@ -81,8 +84,7 @@ static inline bool __list_del_entry_valid(_unused_ struct list_head *entry)
* This is only for internal list manipulation where we know
* the prev/next entries already!
*/
-static inline void __list_add(struct list_head *new,
- struct list_head *prev,
+static inline void __list_add(struct list_head *new, struct list_head *prev,
struct list_head *next)
{
if (!__list_add_valid(new, prev, next))
@@ -107,7 +109,6 @@ static inline void list_add(struct list_head *new, struct list_head *head)
__list_add(new, head, head->next);
}
-
/**
* list_add_tail - add a new entry
* @new: new entry to be added
@@ -128,7 +129,7 @@ static inline void list_add_tail(struct list_head *new, struct list_head *head)
* This is only for internal list manipulation where we know
* the prev/next entries already!
*/
-static inline void __list_del(struct list_head * prev, struct list_head * next)
+static inline void __list_del(struct list_head *prev, struct list_head *next)
{
next->prev = prev;
WRITE_ONCE(prev->next, next);
@@ -176,8 +177,7 @@ static inline void list_del(struct list_head *entry)
*
* If @old was empty, it will be overwritten.
*/
-static inline void list_replace(struct list_head *old,
- struct list_head *new)
+static inline void list_replace(struct list_head *old, struct list_head *new)
{
new->next = old->next;
new->next->prev = new;
@@ -204,8 +204,7 @@ static inline void list_replace_init(struct list_head *old,
* @entry1: the location to place entry2
* @entry2: the location to place entry1
*/
-static inline void list_swap(struct list_head *entry1,
- struct list_head *entry2)
+static inline void list_swap(struct list_head *entry1, struct list_head *entry2)
{
struct list_head *pos = entry2->prev;
@@ -278,7 +277,7 @@ static inline void list_bulk_move_tail(struct list_head *head,
* @head: the head of the list
*/
static inline int list_is_first(const struct list_head *list,
- const struct list_head *head)
+ const struct list_head *head)
{
return list->prev == head;
}
@@ -289,7 +288,7 @@ static inline int list_is_first(const struct list_head *list,
* @head: the head of the list
*/
static inline int list_is_last(const struct list_head *list,
- const struct list_head *head)
+ const struct list_head *head)
{
return list->next == head;
}
@@ -364,7 +363,8 @@ static inline int list_is_singular(const struct list_head *head)
}
static inline void __list_cut_position(struct list_head *list,
- struct list_head *head, struct list_head *entry)
+ struct list_head *head,
+ struct list_head *entry)
{
struct list_head *new_first = entry->next;
list->next = head->next;
@@ -390,12 +390,12 @@ static inline void __list_cut_position(struct list_head *list,
*
*/
static inline void list_cut_position(struct list_head *list,
- struct list_head *head, struct list_head *entry)
+ struct list_head *head,
+ struct list_head *entry)
{
if (list_empty(head))
return;
- if (list_is_singular(head) &&
- (head->next != entry && head != entry))
+ if (list_is_singular(head) && (head->next != entry && head != entry))
return;
if (entry == head)
INIT_LIST_HEAD(list);
@@ -434,8 +434,7 @@ static inline void list_cut_before(struct list_head *list,
}
static inline void __list_splice(const struct list_head *list,
- struct list_head *prev,
- struct list_head *next)
+ struct list_head *prev, struct list_head *next)
{
struct list_head *first = list->next;
struct list_head *last = list->prev;
@@ -453,7 +452,7 @@ static inline void __list_splice(const struct list_head *list,
* @head: the place to add it in the first list.
*/
static inline void list_splice(const struct list_head *list,
- struct list_head *head)
+ struct list_head *head)
{
if (!list_empty(list))
__list_splice(list, head, head->next);
@@ -465,7 +464,7 @@ static inline void list_splice(const struct list_head *list,
* @head: the place to add it in the first list.
*/
static inline void list_splice_tail(struct list_head *list,
- struct list_head *head)
+ struct list_head *head)
{
if (!list_empty(list))
__list_splice(list, head->prev, head);
@@ -510,8 +509,7 @@ static inline void list_splice_tail_init(struct list_head *list,
* @type: the type of the struct this is embedded in.
* @member: the name of the list_head within the struct.
*/
-#define list_entry(ptr, type, member) \
- container_of(ptr, type, member)
+#define list_entry(ptr, type, member) container_of(ptr, type, member)
/**
* list_first_entry - get the first element from a list
@@ -521,7 +519,7 @@ static inline void list_splice_tail_init(struct list_head *list,
*
* Note, that list is expected to be not empty.
*/
-#define list_first_entry(ptr, type, member) \
+#define list_first_entry(ptr, type, member) \
list_entry((ptr)->next, type, member)
/**
@@ -532,8 +530,7 @@ static inline void list_splice_tail_init(struct list_head *list,
*
* Note, that list is expected to be not empty.
*/
-#define list_last_entry(ptr, type, member) \
- list_entry((ptr)->prev, type, member)
+#define list_last_entry(ptr, type, member) list_entry((ptr)->prev, type, member)
/**
* list_first_entry_or_null - get the first element from a list
@@ -543,18 +540,19 @@ static inline void list_splice_tail_init(struct list_head *list,
*
* Note that if the list is empty, it returns NULL.
*/
-#define list_first_entry_or_null(ptr, type, member) ({ \
- struct list_head *head__ = (ptr); \
- struct list_head *pos__ = READ_ONCE(head__->next); \
- pos__ != head__ ? list_entry(pos__, type, member) : NULL; \
-})
+#define list_first_entry_or_null(ptr, type, member) \
+ ({ \
+ struct list_head *head__ = (ptr); \
+ struct list_head *pos__ = READ_ONCE(head__->next); \
+ pos__ != head__ ? list_entry(pos__, type, member) : NULL; \
+ })
/**
* list_next_entry - get the next element in list
* @pos: the type * to cursor
* @member: the name of the list_head within the struct.
*/
-#define list_next_entry(pos, member) \
+#define list_next_entry(pos, member) \
list_entry((pos)->member.next, typeof(*(pos)), member)
/**
@@ -562,7 +560,7 @@ static inline void list_splice_tail_init(struct list_head *list,
* @pos: the type * to cursor
* @member: the name of the list_head within the struct.
*/
-#define list_prev_entry(pos, member) \
+#define list_prev_entry(pos, member) \
list_entry((pos)->member.prev, typeof(*(pos)), member)
/**
@@ -570,7 +568,7 @@ static inline void list_splice_tail_init(struct list_head *list,
* @pos: the &struct list_head to use as a loop cursor.
* @head: the head for your list.
*/
-#define list_for_each(pos, head) \
+#define list_for_each(pos, head) \
for (pos = (head)->next; pos != (head); pos = pos->next)
/**
@@ -580,7 +578,7 @@ static inline void list_splice_tail_init(struct list_head *list,
*
* Continue to iterate over a list, continuing after the current position.
*/
-#define list_for_each_continue(pos, head) \
+#define list_for_each_continue(pos, head) \
for (pos = pos->next; pos != (head); pos = pos->next)
/**
@@ -588,7 +586,7 @@ static inline void list_splice_tail_init(struct list_head *list,
* @pos: the &struct list_head to use as a loop cursor.
* @head: the head for your list.
*/
-#define list_for_each_prev(pos, head) \
+#define list_for_each_prev(pos, head) \
for (pos = (head)->prev; pos != (head); pos = pos->prev)
/**
@@ -597,19 +595,19 @@ static inline void list_splice_tail_init(struct list_head *list,
* @n: another &struct list_head to use as temporary storage
* @head: the head for your list.
*/
-#define list_for_each_safe(pos, n, head) \
- for (pos = (head)->next, n = pos->next; pos != (head); \
- pos = n, n = pos->next)
+#define list_for_each_safe(pos, n, head) \
+ for (pos = (head)->next, n = pos->next; pos != (head); \
+ pos = n, n = pos->next)
/**
- * list_for_each_prev_safe - iterate over a list backwards safe against removal of list entry
+ * list_for_each_prev_safe - iterate over a list backwards safe against removal
+ * of list entry
* @pos: the &struct list_head to use as a loop cursor.
* @n: another &struct list_head to use as temporary storage
* @head: the head for your list.
*/
-#define list_for_each_prev_safe(pos, n, head) \
- for (pos = (head)->prev, n = pos->prev; \
- pos != (head); \
+#define list_for_each_prev_safe(pos, n, head) \
+ for (pos = (head)->prev, n = pos->prev; pos != (head); \
pos = n, n = pos->prev)
/**
@@ -618,10 +616,9 @@ static inline void list_splice_tail_init(struct list_head *list,
* @head: the head for your list.
* @member: the name of the list_head within the struct.
*/
-#define list_for_each_entry(pos, head, member) \
- for (pos = list_first_entry(head, typeof(*pos), member); \
- &pos->member != (head); \
- pos = list_next_entry(pos, member))
+#define list_for_each_entry(pos, head, member) \
+ for (pos = list_first_entry(head, typeof(*pos), member); \
+ &pos->member != (head); pos = list_next_entry(pos, member))
/**
* list_for_each_entry_reverse - iterate backwards over list of given type.
@@ -629,21 +626,22 @@ static inline void list_splice_tail_init(struct list_head *list,
* @head: the head for your list.
* @member: the name of the list_head within the struct.
*/
-#define list_for_each_entry_reverse(pos, head, member) \
- for (pos = list_last_entry(head, typeof(*pos), member); \
- &pos->member != (head); \
- pos = list_prev_entry(pos, member))
+#define list_for_each_entry_reverse(pos, head, member) \
+ for (pos = list_last_entry(head, typeof(*pos), member); \
+ &pos->member != (head); pos = list_prev_entry(pos, member))
/**
- * list_prepare_entry - prepare a pos entry for use in list_for_each_entry_continue()
+ * list_prepare_entry - prepare a pos entry for use in
+ * list_for_each_entry_continue()
* @pos: the type * to use as a start point
* @head: the head of the list
* @member: the name of the list_head within the struct.
*
- * Prepares a pos entry for use as a start point in list_for_each_entry_continue().
+ * Prepares a pos entry for use as a start point in
+ * list_for_each_entry_continue().
*/
-#define list_prepare_entry(pos, head, member) \
- ((pos) ? : list_entry(head, typeof(*pos), member))
+#define list_prepare_entry(pos, head, member) \
+ ((pos) ?: list_entry(head, typeof(*pos), member))
/**
* list_for_each_entry_continue - continue iteration over list of given type
@@ -654,9 +652,8 @@ static inline void list_splice_tail_init(struct list_head *list,
* Continue to iterate over list of given type, continuing after
* the current position.
*/
-#define list_for_each_entry_continue(pos, head, member) \
- for (pos = list_next_entry(pos, member); \
- &pos->member != (head); \
+#define list_for_each_entry_continue(pos, head, member) \
+ for (pos = list_next_entry(pos, member); &pos->member != (head); \
pos = list_next_entry(pos, member))
/**
@@ -668,22 +665,21 @@ static inline void list_splice_tail_init(struct list_head *list,
* Start to iterate over list of given type backwards, continuing after
* the current position.
*/
-#define list_for_each_entry_continue_reverse(pos, head, member) \
- for (pos = list_prev_entry(pos, member); \
- &pos->member != (head); \
+#define list_for_each_entry_continue_reverse(pos, head, member) \
+ for (pos = list_prev_entry(pos, member); &pos->member != (head); \
pos = list_prev_entry(pos, member))
/**
- * list_for_each_entry_from - iterate over list of given type from the current point
+ * list_for_each_entry_from - iterate over list of given type from the current
+ * point
* @pos: the type * to use as a loop cursor.
* @head: the head for your list.
* @member: the name of the list_head within the struct.
*
* Iterate over list of given type, continuing from current position.
*/
-#define list_for_each_entry_from(pos, head, member) \
- for (; &pos->member != (head); \
- pos = list_next_entry(pos, member))
+#define list_for_each_entry_from(pos, head, member) \
+ for (; &pos->member != (head); pos = list_next_entry(pos, member))
/**
* list_for_each_entry_from_reverse - iterate backwards over list of given type
@@ -694,25 +690,25 @@ static inline void list_splice_tail_init(struct list_head *list,
*
* Iterate backwards over list of given type, continuing from current position.
*/
-#define list_for_each_entry_from_reverse(pos, head, member) \
- for (; &pos->member != (head); \
- pos = list_prev_entry(pos, member))
+#define list_for_each_entry_from_reverse(pos, head, member) \
+ for (; &pos->member != (head); pos = list_prev_entry(pos, member))
/**
- * list_for_each_entry_safe - iterate over list of given type safe against removal of list entry
+ * list_for_each_entry_safe - iterate over list of given type safe against
+ * removal of list entry
* @pos: the type * to use as a loop cursor.
* @n: another type * to use as temporary storage
* @head: the head for your list.
* @member: the name of the list_head within the struct.
*/
-#define list_for_each_entry_safe(pos, n, head, member) \
- for (pos = list_first_entry(head, typeof(*pos), member), \
- n = list_next_entry(pos, member); \
- &pos->member != (head); \
- pos = n, n = list_next_entry(n, member))
+#define list_for_each_entry_safe(pos, n, head, member) \
+ for (pos = list_first_entry(head, typeof(*pos), member), \
+ n = list_next_entry(pos, member); \
+ &pos->member != (head); pos = n, n = list_next_entry(n, member))
/**
- * list_for_each_entry_safe_continue - continue list iteration safe against removal
+ * list_for_each_entry_safe_continue - continue list iteration safe against
+ * removal
* @pos: the type * to use as a loop cursor.
* @n: another type * to use as temporary storage
* @head: the head for your list.
@@ -721,14 +717,14 @@ static inline void list_splice_tail_init(struct list_head *list,
* Iterate over list of given type, continuing after current point,
* safe against removal of list entry.
*/
-#define list_for_each_entry_safe_continue(pos, n, head, member) \
- for (pos = list_next_entry(pos, member), \
- n = list_next_entry(pos, member); \
- &pos->member != (head); \
- pos = n, n = list_next_entry(n, member))
+#define list_for_each_entry_safe_continue(pos, n, head, member) \
+ for (pos = list_next_entry(pos, member), \
+ n = list_next_entry(pos, member); \
+ &pos->member != (head); pos = n, n = list_next_entry(n, member))
/**
- * list_for_each_entry_safe_from - iterate over list from current point safe against removal
+ * list_for_each_entry_safe_from - iterate over list from current point safe
+ * against removal
* @pos: the type * to use as a loop cursor.
* @n: another type * to use as temporary storage
* @head: the head for your list.
@@ -737,13 +733,13 @@ static inline void list_splice_tail_init(struct list_head *list,
* Iterate over list of given type from current point, safe against
* removal of list entry.
*/
-#define list_for_each_entry_safe_from(pos, n, head, member) \
- for (n = list_next_entry(pos, member); \
- &pos->member != (head); \
+#define list_for_each_entry_safe_from(pos, n, head, member) \
+ for (n = list_next_entry(pos, member); &pos->member != (head); \
pos = n, n = list_next_entry(n, member))
/**
- * list_for_each_entry_safe_reverse - iterate backwards over list safe against removal
+ * list_for_each_entry_safe_reverse - iterate backwards over list safe against
+ * removal
* @pos: the type * to use as a loop cursor.
* @n: another type * to use as temporary storage
* @head: the head for your list.
@@ -752,11 +748,10 @@ static inline void list_splice_tail_init(struct list_head *list,
* Iterate backwards over list of given type, safe against removal
* of list entry.
*/
-#define list_for_each_entry_safe_reverse(pos, n, head, member) \
- for (pos = list_last_entry(head, typeof(*pos), member), \
- n = list_prev_entry(pos, member); \
- &pos->member != (head); \
- pos = n, n = list_prev_entry(n, member))
+#define list_for_each_entry_safe_reverse(pos, n, head, member) \
+ for (pos = list_last_entry(head, typeof(*pos), member), \
+ n = list_prev_entry(pos, member); \
+ &pos->member != (head); pos = n, n = list_prev_entry(n, member))
/**
* list_safe_reset_next - reset a stale list_for_each_entry_safe loop
@@ -770,7 +765,6 @@ static inline void list_splice_tail_init(struct list_head *list,
* and list_safe_reset_next is called after re-taking the lock and before
* completing the current iteration of the loop body.
*/
-#define list_safe_reset_next(pos, n, member) \
- n = list_next_entry(pos, member)
+#define list_safe_reset_next(pos, n, member) n = list_next_entry(pos, member)
#endif
diff --git a/shared/mc-protocol.c b/shared/mc-protocol.c
index afc9b38..03a2dcd 100644
--- a/shared/mc-protocol.c
+++ b/shared/mc-protocol.c
@@ -4,15 +4,14 @@
#include "utils.h"
-#define MC_HELO 0x00
-#define MC_NEXT_STATE_STATUS 0x01
-#define MC_GET_STATUS 0x00
-#define MC_VARINT_MAX_BYTES 5
-#define MC_STATUS_REPLY 0x00
-#define MC_UNDEFINED_VERSION -1
-
-static inline unsigned
-write_byte(char **pos, char byte)
+#define MC_HELO 0x00
+#define MC_NEXT_STATE_STATUS 0x01
+#define MC_GET_STATUS 0x00
+#define MC_VARINT_MAX_BYTES 5
+#define MC_STATUS_REPLY 0x00
+#define MC_UNDEFINED_VERSION -1
+
+static inline unsigned write_byte(char **pos, char byte)
{
if (pos && *pos) {
**pos = byte;
@@ -20,8 +19,7 @@ write_byte(char **pos, char byte)
}
return 1;
}
-static inline unsigned
-write_varint(char **pos, int32_t v)
+static inline unsigned write_varint(char **pos, int32_t v)
{
uint32_t u = (uint32_t)v;
unsigned rv = 0;
@@ -40,8 +38,7 @@ write_varint(char **pos, int32_t v)
return rv;
}
-static inline unsigned
-write_bytes(char **pos, const char *bytes, size_t n)
+static inline unsigned write_bytes(char **pos, const char *bytes, size_t n)
{
if (pos && *pos) {
memcpy(*pos, bytes, n);
@@ -51,8 +48,7 @@ write_bytes(char **pos, const char *bytes, size_t n)
return n;
}
-static inline unsigned
-write_str(char **pos, const char *str, size_t len)
+static inline unsigned write_str(char **pos, const char *str, size_t len)
{
unsigned rv;
@@ -68,8 +64,7 @@ write_str(char **pos, const char *str, size_t len)
* 0 = need more bytes
* < 0 = error
*/
-static inline int
-read_varint(const char **from, size_t *remain, int32_t *res)
+static inline int read_varint(const char **from, size_t *remain, int32_t *res)
{
unsigned consumed;
uint32_t val = 0;
@@ -103,8 +98,7 @@ read_varint(const char **from, size_t *remain, int32_t *res)
* 0 = need more bytes
* < 0 = error
*/
-int
-mc_is_handshake_complete(const char *buf, size_t len)
+int mc_is_handshake_complete(const char *buf, size_t len)
{
int32_t mclen;
int r;
@@ -123,21 +117,21 @@ mc_is_handshake_complete(const char *buf, size_t len)
}
if (mclen < len) {
- debug(DBG_IDLE, "short MC message - len: %" PRIi32 ", remain: %zu",
- mclen, len);
+ debug(DBG_IDLE,
+ "short MC message - len: %" PRIi32 ", remain: %zu", mclen,
+ len);
return 0;
- }
+ }
debug(DBG_IDLE, "Complete message");
return 1;
}
-#define PLAYERS_NEEDLE "\"players\""
-#define MAX_NEEDLE "\"max\""
-#define ONLINE_NEEDLE "\"online\""
-static bool
-mc_get_player_count(const char *buf, size_t remain,
- unsigned *ronline, unsigned *rmax)
+#define PLAYERS_NEEDLE "\"players\""
+#define MAX_NEEDLE "\"max\""
+#define ONLINE_NEEDLE "\"online\""
+static bool mc_get_player_count(const char *buf, size_t remain,
+ unsigned *ronline, unsigned *rmax)
{
/*
* Example JSON (line breaks added):
@@ -182,9 +176,8 @@ error:
return false;
}
-bool
-mc_protocol_parse_status_reply(const char *buf, size_t len,
- unsigned *online, unsigned *max)
+bool mc_protocol_parse_status_reply(const char *buf, size_t len,
+ unsigned *online, unsigned *max)
{
const char *from = buf;
size_t remain = len;
@@ -201,8 +194,8 @@ mc_protocol_parse_status_reply(const char *buf, size_t len,
return false;
}
- debug(DBG_IDLE, "MC message - len: %" PRIi32 ", remain: %zu",
- mclen, remain);
+ debug(DBG_IDLE, "MC message - len: %" PRIi32 ", remain: %zu", mclen,
+ remain);
if (*from != MC_STATUS_REPLY) {
error("unknown server reply (0x%02hhx)", *from);
@@ -218,8 +211,8 @@ mc_protocol_parse_status_reply(const char *buf, size_t len,
return false;
}
- debug(DBG_IDLE, "MC - json len: %" PRIi32 ", remain: %zu",
- jsonlen, remain);
+ debug(DBG_IDLE, "MC - json len: %" PRIi32 ", remain: %zu", jsonlen,
+ remain);
if (jsonlen < remain) {
error("invalid JSON length");
@@ -232,9 +225,8 @@ mc_protocol_parse_status_reply(const char *buf, size_t len,
return false;
}
-bool
-mc_protocol_create_status_request(char *buf, size_t len, size_t *rlen,
- struct saddr *saddr)
+bool mc_protocol_create_status_request(char *buf, size_t len, size_t *rlen,
+ struct saddr *saddr)
{
uint16_t port;
char hostname[INET6_ADDRSTRLEN];
@@ -248,7 +240,7 @@ mc_protocol_create_status_request(char *buf, size_t len, size_t *rlen,
hostlen = strlen(hostname);
/* First, a handshake, calculate body length... */
- bodylen = write_byte(NULL, MC_HELO);
+ bodylen = write_byte(NULL, MC_HELO);
bodylen += write_varint(NULL, MC_UNDEFINED_VERSION);
bodylen += write_str(NULL, hostname, hostlen);
bodylen += write_byte(NULL, (port >> 8) & 0xff);
@@ -279,4 +271,3 @@ mc_protocol_create_status_request(char *buf, size_t len, size_t *rlen,
*rlen = packetlen;
return true;
}
-
diff --git a/shared/mc-protocol.h b/shared/mc-protocol.h
index 8ecc02a..8e62aeb 100644
--- a/shared/mc-protocol.h
+++ b/shared/mc-protocol.h
@@ -10,4 +10,3 @@ bool mc_protocol_create_status_request(char *buf, size_t len, size_t *rlen,
struct saddr *saddr);
#endif
-
diff --git a/shared/rcon-protocol.c b/shared/rcon-protocol.c
index 0ea1245..0cf73fc 100644
--- a/shared/rcon-protocol.c
+++ b/shared/rcon-protocol.c
@@ -5,8 +5,7 @@
#include "rcon-protocol.h"
-static int32_t
-read_int(const char **pos, size_t *len)
+static int32_t read_int(const char **pos, size_t *len)
{
uint32_t val;
const char *p;
@@ -18,8 +17,8 @@ read_int(const char **pos, size_t *len)
return 0;
p = *pos;
- val = ((uint8_t)p[0] << 0);
- val += ((uint8_t)p[1] << 8);
+ val = ((uint8_t)p[0] << 0);
+ val += ((uint8_t)p[1] << 8);
val += ((uint8_t)p[2] << 16);
val += ((uint8_t)p[3] << 24);
@@ -30,8 +29,7 @@ read_int(const char **pos, size_t *len)
return (int32_t)val;
}
-static void
-write_int(char **pos, size_t *len, int32_t orig)
+static void write_int(char **pos, size_t *len, int32_t orig)
{
uint32_t val = (uint32_t)orig;
char *p;
@@ -40,8 +38,8 @@ write_int(char **pos, size_t *len, int32_t orig)
return;
p = *pos;
- p[0] = (val >> 0) & 0xff;
- p[1] = (val >> 8) & 0xff;
+ p[0] = (val >> 0) & 0xff;
+ p[1] = (val >> 8) & 0xff;
p[2] = (val >> 16) & 0xff;
p[3] = (val >> 24) & 0xff;
@@ -50,8 +48,7 @@ write_int(char **pos, size_t *len, int32_t orig)
*len += RCON_INT_LEN;
}
-static void
-write_str(char **pos, size_t *len, const char *str, size_t slen)
+static void write_str(char **pos, size_t *len, const char *str, size_t slen)
{
if (!pos || !*pos || !str || *str == '\0' || slen < 1)
return;
@@ -62,8 +59,7 @@ write_str(char **pos, size_t *len, const char *str, size_t slen)
*len += slen;
}
-static void
-write_end(char **pos, size_t *len)
+static void write_end(char **pos, size_t *len)
{
char *p;
@@ -79,9 +75,9 @@ write_end(char **pos, size_t *len)
*len += RCON_END_LEN;
}
-bool
-rcon_protocol_create_packet(char *buf, size_t len, size_t *rlen, int32_t reqid,
- enum rcon_packet_type type, const char *msg)
+bool rcon_protocol_create_packet(char *buf, size_t len, size_t *rlen,
+ int32_t reqid, enum rcon_packet_type type,
+ const char *msg)
{
size_t plen, msglen;
char *pos;
@@ -115,8 +111,7 @@ rcon_protocol_create_packet(char *buf, size_t len, size_t *rlen, int32_t reqid,
* 0 = packet not complete
* > 0 = packet complete (length)
*/
-int32_t
-rcon_protocol_packet_complete(const char *buf, size_t len)
+int32_t rcon_protocol_packet_complete(const char *buf, size_t len)
{
const char *pos;
int32_t plen;
@@ -140,9 +135,9 @@ rcon_protocol_packet_complete(const char *buf, size_t len)
return plen;
}
-bool
-rcon_protocol_read_packet(const char *buf, size_t len, int32_t *id, int32_t *type,
- const char **rmsg, const char **error)
+bool rcon_protocol_read_packet(const char *buf, size_t len, int32_t *id,
+ int32_t *type, const char **rmsg,
+ const char **error)
{
const char *pos;
int32_t plen;
diff --git a/shared/rcon-protocol.h b/shared/rcon-protocol.h
index 097da1d..b3aea98 100644
--- a/shared/rcon-protocol.h
+++ b/shared/rcon-protocol.h
@@ -5,6 +5,7 @@
#include <stdint.h>
/* FIXME: FAIL is an id, not type, LOGIN_OK should be LOGIN_RESPONSE */
+/* clang-format off */
enum rcon_packet_type {
RCON_PACKET_LOGIN = 3,
RCON_PACKET_LOGIN_OK = 2,
@@ -12,6 +13,7 @@ enum rcon_packet_type {
RCON_PACKET_COMMAND = 2,
RCON_PACKET_RESPONSE = 0,
};
+/* clang-format on */
#define RCON_INT_LEN 4
@@ -22,8 +24,7 @@ enum rcon_packet_type {
/* header + reqid + type + end */
#define RCON_PKT_MIN_LEN (RCON_HDR_LEN + 2 * RCON_INT_LEN + RCON_END_LEN)
-static inline size_t
-rcon_protocol_packet_len(size_t msglen)
+static inline size_t rcon_protocol_packet_len(size_t msglen)
{
/* header + reqid + type + msg + end */
return (RCON_PKT_MIN_LEN + msglen);
diff --git a/shared/server-config-options.h b/shared/server-config-options.h
index 5aee734..5600e52 100644
--- a/shared/server-config-options.h
+++ b/shared/server-config-options.h
@@ -25,55 +25,68 @@ struct cfg_key_value_map scfg_key_map[] = {
.key_name = "type",
.key_value = SCFG_KEY_TYPE,
.value_type = CFG_VAL_TYPE_STRING,
- }, {
+ },
+ {
.key_name = "name",
.key_value = SCFG_KEY_NAME,
.value_type = CFG_VAL_TYPE_STRING,
- }, {
+ },
+ {
.key_name = "port",
.key_value = SCFG_KEY_PORT,
.value_type = CFG_VAL_TYPE_UINT16,
- }, {
+ },
+ {
.key_name = "local",
.key_value = SCFG_KEY_LOCAL,
.value_type = CFG_VAL_TYPE_ADDRS,
- }, {
+ },
+ {
.key_name = "remote",
.key_value = SCFG_KEY_REMOTE,
.value_type = CFG_VAL_TYPE_ADDRS,
- }, {
+ },
+ {
.key_name = "idle_timeout",
.key_value = SCFG_KEY_IDLE_TIMEOUT,
.value_type = CFG_VAL_TYPE_UINT16,
- }, {
+ },
+ {
.key_name = "stop_method",
.key_value = SCFG_KEY_STOP_METHOD,
.value_type = CFG_VAL_TYPE_STRING,
- }, {
+ },
+ {
.key_name = "start_method",
.key_value = SCFG_KEY_START_METHOD,
.value_type = CFG_VAL_TYPE_STRING,
- }, {
+ },
+ {
.key_name = "stop_exec",
.key_value = SCFG_KEY_STOP_EXEC,
.value_type = CFG_VAL_TYPE_STRING,
- }, {
+ },
+ {
.key_name = "start_exec",
.key_value = SCFG_KEY_START_EXEC,
.value_type = CFG_VAL_TYPE_STRING,
- }, {
+ },
+ {
.key_name = "rcon",
.key_value = SCFG_KEY_RCON,
.value_type = CFG_VAL_TYPE_ADDRS,
- }, {
+ },
+ {
.key_name = "rcon_password",
.key_value = SCFG_KEY_RCON_PASSWORD,
.value_type = CFG_VAL_TYPE_STRING,
- }, {
+ },
+ {
.key_name = "systemd_service",
.key_value = SCFG_KEY_SYSTEMD_SERVICE,
.value_type = CFG_VAL_TYPE_STRING,
- }, {
+ },
+ {
.key_name = NULL,
.key_value = SCFG_KEY_INVALID,
.value_type = CFG_VAL_TYPE_INVALID,
@@ -81,4 +94,3 @@ struct cfg_key_value_map scfg_key_map[] = {
};
#endif
-
diff --git a/shared/utils.c b/shared/utils.c
index c71f1f7..20d9809 100644
--- a/shared/utils.c
+++ b/shared/utils.c
@@ -17,8 +17,7 @@
unsigned debug_mask = 0;
-void
-socket_set_low_latency(int sfd, bool keepalive, bool iptos, bool nodelay)
+void socket_set_low_latency(int sfd, bool keepalive, bool iptos, bool nodelay)
{
int option;
@@ -27,31 +26,33 @@ socket_set_low_latency(int sfd, bool keepalive, bool iptos, bool nodelay)
/* Probably not necessary, but can't hurt */
if (keepalive) {
option = true;
- if (setsockopt(sfd, SOL_SOCKET, SO_KEEPALIVE, &option, sizeof(option)) < 0)
+ if (setsockopt(sfd, SOL_SOCKET, SO_KEEPALIVE, &option,
+ sizeof(option)) < 0)
error("setsockopt: %m");
}
/* Doubtful if it has much effect, but can't hurt */
if (iptos) {
option = IPTOS_LOWDELAY;
- if (setsockopt(sfd, IPPROTO_IP, IP_TOS, &option, sizeof(option)) < 0)
+ if (setsockopt(sfd, IPPROTO_IP, IP_TOS, &option,
+ sizeof(option)) < 0)
error("setsockopt: %m");
}
/* Nagle's algorithm is a poor fit for gaming */
if (nodelay) {
option = true;
- if (setsockopt(sfd, IPPROTO_TCP, TCP_NODELAY, &option, sizeof(option)) < 0)
+ if (setsockopt(sfd, IPPROTO_TCP, TCP_NODELAY, &option,
+ sizeof(option)) < 0)
error("setsockopt: %m");
}
}
-uint16_t
-saddr_port(struct saddr *saddr)
+uint16_t saddr_port(struct saddr *saddr)
{
- //assert_return(saddr, 0);
+ // assert_return(saddr, 0);
- switch (saddr->storage.ss_family) {
+ switch (saddr->st.ss_family) {
case AF_INET:
return ntohs(saddr->in4.sin_port);
case AF_INET6:
@@ -61,18 +62,19 @@ saddr_port(struct saddr *saddr)
}
}
-char *
-saddr_addr(struct saddr *saddr, char *buf, size_t len)
+char *saddr_addr(struct saddr *saddr, char *buf, size_t len)
{
- //assert_return(saddr && buf && len > 0, NULL);
+ // assert_return(saddr && buf && len > 0, NULL);
- switch (saddr->storage.ss_family) {
+ switch (saddr->st.ss_family) {
case AF_INET:
- if (inet_ntop(saddr->in4.sin_family, &saddr->in4.sin_addr, buf, len))
+ if (inet_ntop(saddr->in4.sin_family, &saddr->in4.sin_addr, buf,
+ len))
return buf;
break;
case AF_INET6:
- if (inet_ntop(saddr->in6.sin6_family, &saddr->in6.sin6_addr, buf, len))
+ if (inet_ntop(saddr->in6.sin6_family, &saddr->in6.sin6_addr,
+ buf, len))
return buf;
break;
default:
@@ -83,10 +85,9 @@ saddr_addr(struct saddr *saddr, char *buf, size_t len)
return buf;
}
-void
-saddr_set_ipv4(struct saddr *saddr, in_addr_t ip, in_port_t port)
+void saddr_set_ipv4(struct saddr *saddr, in_addr_t ip, in_port_t port)
{
- //assert_return(saddr);
+ // assert_return(saddr);
memset(&saddr->in4, 0, sizeof(saddr->in4));
saddr->in4.sin_family = AF_INET;
@@ -96,10 +97,10 @@ saddr_set_ipv4(struct saddr *saddr, in_addr_t ip, in_port_t port)
saddr_set_addrstr(saddr);
}
-void
-saddr_set_ipv6(struct saddr *saddr, const struct in6_addr *ip, in_port_t port)
+void saddr_set_ipv6(struct saddr *saddr, const struct in6_addr *ip,
+ in_port_t port)
{
- //assert_return(saddr && ip);
+ // assert_return(saddr && ip);
memset(&saddr->in6, 0, sizeof(saddr->in6));
saddr->in6.sin6_family = AF_INET6;
@@ -110,14 +111,13 @@ saddr_set_ipv6(struct saddr *saddr, const struct in6_addr *ip, in_port_t port)
saddr_set_addrstr(saddr);
}
-void
-saddr_set_addrstr(struct saddr *saddr)
+void saddr_set_addrstr(struct saddr *saddr)
{
- //assert_return(saddr);
+ // assert_return(saddr);
char abuf[ADDRSTRLEN];
- switch (saddr->storage.ss_family) {
+ switch (saddr->st.ss_family) {
case AF_INET:
snprintf(saddr->addrstr, sizeof(saddr->addrstr),
"AF_INET4 %s %" PRIu16,
@@ -136,8 +136,7 @@ saddr_set_addrstr(struct saddr *saddr)
}
}
-int
-strtou16_strict(const char *str, uint16_t *result)
+int strtou16_strict(const char *str, uint16_t *result)
{
char *end;
long val;
@@ -150,7 +149,7 @@ strtou16_strict(const char *str, uint16_t *result)
if (errno == ERANGE && (val == LONG_MAX || val == LONG_MIN))
return -EINVAL;
-
+
if (errno != 0 && val == 0)
return -EINVAL;
@@ -167,4 +166,3 @@ strtou16_strict(const char *str, uint16_t *result)
*result = val;
return 0;
}
-
diff --git a/shared/utils.h b/shared/utils.h
index 3ed1c87..9171648 100644
--- a/shared/utils.h
+++ b/shared/utils.h
@@ -12,14 +12,14 @@
extern unsigned debug_mask;
-#define _unused_ __attribute__((__unused__))
-#define _pure_ __attribute__((__pure__))
-#define _const_ __attribute__((__const__))
-#define _alloc_(...) __attribute__((__alloc_size__(__VA_ARGS__)))
-#define _malloc_ __attribute__((__malloc__))
+#define _unused_ __attribute__((__unused__))
+#define _pure_ __attribute__((__pure__))
+#define _const_ __attribute__((__const__))
+#define _alloc_(...) __attribute__((__alloc_size__(__VA_ARGS__)))
+#define _malloc_ __attribute__((__malloc__))
#define _printf_(a, b) __attribute__((__format__(printf, a, b)))
-#define _alignas_(x) __attribute__((__aligned__(__alignof(x))))
-#define _big_endian_ __attribute__((packed, scalar_storage_order("big-endian")))
+#define _alignas_(x) __attribute__((__aligned__(__alignof(x))))
+#define _big_endian_ __attribute__((packed, scalar_storage_order("big-endian")))
#if __GNUC__ >= 7
#define _fallthrough_ __attribute__((__fallthrough__))
@@ -35,7 +35,7 @@ extern unsigned debug_mask;
#endif
#endif
-#define STRLEN(x) (sizeof(""x"") - 1)
+#define STRLEN(x) (sizeof("" x "") - 1)
#include "list.h"
#include "debug.h"
@@ -56,7 +56,7 @@ extern unsigned debug_mask;
struct saddr {
union {
- struct sockaddr_storage storage;
+ struct sockaddr_storage st;
struct sockaddr_in in4;
struct sockaddr_in6 in6;
struct sockaddr_ll ll;
@@ -74,7 +74,8 @@ uint16_t saddr_port(struct saddr *saddr);
void saddr_set_ipv4(struct saddr *saddr, in_addr_t ip, in_port_t port);
-void saddr_set_ipv6(struct saddr *saddr, const struct in6_addr *ip, in_port_t port);
+void saddr_set_ipv6(struct saddr *saddr, const struct in6_addr *ip,
+ in_port_t port);
void saddr_set_addrstr(struct saddr *saddr);
@@ -105,9 +106,11 @@ static inline bool strcaseeq(const char *a, const char *b)
#endif
#if __BYTE_ORDER == __LITTLE_ENDIAN
-#define cinet_addr(a,b,c,d) ((uint32_t)((a)<<0|(b)<<8|(c)<<16|(d)<<24))
+#define cinet_addr(a, b, c, d) \
+ ((uint32_t)((a) << 0 | (b) << 8 | (c) << 16 | (d) << 24))
#else
-#define cinet_addr(a,b,c,d) ((uint32_t)((a)<<24|(b)<<16|(c)<<8|(d)<<0))
+#define cinet_addr(a, b, c, d) \
+ ((uint32_t)((a) << 24 | (b) << 16 | (c) << 8 | (d) << 0))
#endif
#define PIPE_RD 0
@@ -117,7 +120,6 @@ static inline bool strcaseeq(const char *a, const char *b)
#define MAX(a, b) ((a) > (b) ? (a) : (b))
-#define DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d))
+#define DIV_ROUND_UP(n, d) (((n) + (d)-1) / (d))
#endif
-