X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=netlink.c;h=7add6d7dc1638800a45aa180b9e758ac3938a1bd;hb=1c56b25a6e2054c0f0628e2f343f5a0df2a7772c;hp=e180b1dfad95fb53f4f46e61516ae83440873538;hpb=b7886fd46ab05c97b8a072e497903622bd1d5290;p=secnet.git diff --git a/netlink.c b/netlink.c index e180b1d..7add6d7 100644 --- a/netlink.c +++ b/netlink.c @@ -1,5 +1,24 @@ /* User-kernel network link */ +/* + * This file is part of secnet. + * See README for full list of copyright holders. + * + * secnet is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * secnet is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * version 3 along with secnet; if not, see + * https://www.gnu.org/licenses/gpl.html. + */ + /* See RFCs 791, 792, 1123 and 1812 */ /* The netlink device is actually a router. Tunnels are unnumbered @@ -468,8 +487,8 @@ static bool_t netlink_check(struct netlink *st, struct buffer_if *buf, struct iphdr *iph=(struct iphdr *)buf->start; int32_t len; - if (iph->ihl < 5) BAD("ihl %u",iph->ihl); if (iph->version != 4) BAD("version %u",iph->version); + if (iph->ihl < 5) BAD("ihl %u",iph->ihl); if (buf->size < iph->ihl*4) BAD("size %"PRId32"<%u*4",buf->size,iph->ihl); if (ip_fast_csum((uint8_t *)iph, iph->ihl)!=0) BAD("csum"); len=ntohs(iph->tot_len); @@ -1039,8 +1058,7 @@ static void netlink_phase_hook(void *sst, uint32_t new_phase) /* All the networks serviced by the various tunnels should now * have been registered. We build a routing table by sorting the * clients by priority. */ - st->routes=safe_malloc_ary(sizeof(*st->routes),st->n_clients, - "netlink_phase_hook"); + NEW_ARY(st->routes,st->n_clients); /* Fill the table */ i=0; for (c=st->clients; c; c=c->next) {