X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=apps%2Fsilcd%2Fserverid.c;fp=apps%2Fsilcd%2Fserverid.c;h=f26630edb30a68b69cf181acef9697530d605246;hb=098d426793c8db0fa5b5c8d12722923871c8cabc;hp=3f2c65914e37cb678f0ac783fd9a4c8de57fc762;hpb=e664adaaed6f162ca7af7eb3329ae63cecfd1fa5;p=silc.git diff --git a/apps/silcd/serverid.c b/apps/silcd/serverid.c index 3f2c6591..f26630ed 100644 --- a/apps/silcd/serverid.c +++ b/apps/silcd/serverid.c @@ -142,3 +142,26 @@ bool silc_id_create_channel_id(SilcServer server, return TRUE; } + +/* Checks whether the `server_id' is valid. It must be based to the + IP address provided in the `remote' socket connection. */ + +bool silc_id_is_valid_server_id(SilcServer server, + SilcServerID *server_id, + SilcSocketConnection remote) +{ + unsigned char ip[16]; + + if (!silc_net_addr2bin(remote->ip, ip, sizeof(ip))) + return FALSE; + + if (silc_net_is_ip4(remote->ip)) { + if (!memcmp(server_id->ip.data, ip, 4)) + return TRUE; + } else { + if (!memcmp(server_id->ip.data, ip, 16)) + return TRUE; + } + + return FALSE; +}