diff options
author | Manuel Bentele | 2020-11-10 07:42:40 +0100 |
---|---|---|
committer | Manuel Bentele | 2020-11-10 07:42:40 +0100 |
commit | 5a430387ffc52d1520e3c6bbc7ef664b282c9644 (patch) | |
tree | 40a52343ecf3531587a9b6c7ed7c7947a4bb7507 /src/kernel/dnbd3_main.c | |
parent | [KERNEL] protect read-only access to server list (diff) | |
download | dnbd3-5a430387ffc52d1520e3c6bbc7ef664b282c9644.tar.gz dnbd3-5a430387ffc52d1520e3c6bbc7ef664b282c9644.tar.xz dnbd3-5a430387ffc52d1520e3c6bbc7ef664b282c9644.zip |
[KERNEL] add manual switching of dnbd3-server to specified server
This patch adds the feature to manually switch the dnbd3-server to a
specified server. The switching is implemented by the use of the ioctl
call SWITCH.
Diffstat (limited to 'src/kernel/dnbd3_main.c')
-rw-r--r-- | src/kernel/dnbd3_main.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/kernel/dnbd3_main.c b/src/kernel/dnbd3_main.c index 7056d31..c44dc44 100644 --- a/src/kernel/dnbd3_main.c +++ b/src/kernel/dnbd3_main.c @@ -34,6 +34,29 @@ struct device *dnbd3_device_to_dev(dnbd3_device_t *dev) return disk_to_dev(dev->disk); } +int is_same_server(const dnbd3_server_t * const a, const dnbd3_server_t * const b) +{ + return (a->host.type == b->host.type) && (a->host.port == b->host.port) + && (0 == memcmp(a->host.addr, b->host.addr, (a->host.type == HOST_IP4 ? 4 : 16))); +} + +dnbd3_server_t *get_existing_server(const dnbd3_server_entry_t * const newserver, dnbd3_device_t * const dev) +{ + int i; + for (i = 0; i < NUMBER_SERVERS; ++i) + { + if ((newserver->host.type == dev->alt_servers[i].host.type) + && (newserver->host.port == dev->alt_servers[i].host.port) + && (0 + == memcmp(newserver->host.addr, dev->alt_servers[i].host.addr, (newserver->host.type == HOST_IP4 ? 4 : 16)))) + { + return &dev->alt_servers[i]; + break; + } + } + return NULL ; +} + static int __init dnbd3_init(void) { int i; |