Browse Source

Prep v231: Cleaned up tree

keep-around/964a6d9fb555cc86528eb1cc1f6d044f85584842
Sven Eden 5 years ago
parent
commit
33863e9c15
  1. 15
      .gitignore
  2. 324
      catalog/elogind.bg.catalog
  3. 20
      coccinelle/htonl.cocci
  4. 6
      coccinelle/strjoina.cocci
  5. 6
      coccinelle/xsprintf.cocci
  6. 70
      src/.gitignore
  7. 335
      src/network/networkd-brvlan.c
  8. 50
      src/network/networkd-netdev-vrf.c
  9. BIN
      src/resolve/test-data/fake-caa.pkts

15
.gitignore

@ -304,3 +304,18 @@ patches/
*.remote
*.bak
*.layout
# directories not needed by elogind
/sysusers.d
/hwdb
/catalog
/xorg
/network
/system-preset
/tmpfiles.d
/units
/rules
/test
/.github
/sysctl.d
/coccinelle

324
catalog/elogind.bg.catalog

@ -1,324 +0,0 @@
# This file is part of elogind.
#
# Copyright 2012 Lennart Poettering
# Copyright 2016 Alexander Shopov <ash@kambanaria.org>
#
# elogind is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
#
# elogind 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
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with elogind; If not, see <http://www.gnu.org/licenses/>.
# Message catalog for elogind's own messages
# The catalog format is documented on
# http://www.freedesktop.org/wiki/Software/elogind/catalog
# For an explanation why we do all this, see https://xkcd.com/1024/
-- f77379a8490b408bbe5f6940505a777b
Subject: Журналният процес е пуснат
Defined-By: elogind
Support: http://lists.freedesktop.org/mailman/listinfo/elogind-devel
Журналният процес на системата е стартирал, отворил е журналните файлове
за запис и може да приема заявки.
-- d93fb3c9c24d451a97cea615ce59c00b
Subject: Журналният процес е спрян
Defined-By: elogind
Support: http://lists.freedesktop.org/mailman/listinfo/elogind-devel
Журналният процес на системата е спрян, затворени са всички отворени
журнални файлове.
-- ec387f577b844b8fa948f33cad9a75e6
Subject: Пространството върху диска заето от журналните файлове
Defined-By: elogind
Support: http://lists.freedesktop.org/mailman/listinfo/elogind-devel
@JOURNAL_NAME@ (@JOURNAL_PATH@) в момента заема @CURRENT_USE_PRETTY@.
Максималният зададен размер е @MAX_USE_PRETTY@.
Свободни се оставят поне @DISK_KEEP_FREE_PRETTY@ (от текущо наличните @DISK_AVAILABLE_PRETTY@).
Максималният наложен размер е @LIMIT_PRETTY@, от който @AVAILABLE_PRETTY@ са свободни.
Настройките за максималния размер на журнала върху диска се
управляват чрез директивите „SystemMaxUse=“, „SystemKeepFree=“,
„SystemMaxFileSize=“, „RuntimeMaxUse=“, „RuntimeKeepFree=“ и
„RuntimeMaxFileSize=“ във файла „/etc/elogind/journald.conf“.
За повече информация прегледайте „journald.conf(5)“ от ръководството.
-- a596d6fe7bfa4994828e72309e95d61e
Subject: Съобщенията от някоя услуга не са допуснати
Defined-By: elogind
Support: http://lists.freedesktop.org/mailman/listinfo/elogind-devel
Documentation: man:journald.conf(5)
Някоя услуга генерира прекалено много съобщения за кратък период.
Част само от нейните съобщения са отхвърляни.
Съобщенията от другите услуги не са засегнати.
Настройките за максималния брой съобщения, които ще се обработят, се
управляват чрез директивите „RateLimitInterval=“ и „RateLimitBurst=“ във
файла „/etc/elogind/journald.conf“. За повече информация прегледайте
„journald.conf(5)“ от ръководството.
-- e9bf28e6e834481bb6f48f548ad13606
Subject: Пропуснати журнални съобщения
Defined-By: elogind
Support: http://lists.freedesktop.org/mailman/listinfo/elogind-devel
Някои от съобщенията на ядрото може и да са пропуснати, защото системата не
смогваше да ги обработи достатъчно бързо.
-- fc2e22bc6ee647b6b90729ab34a250b1
Subject: Процес № @COREDUMP_PID@ (@COREDUMP_COMM@) запази освободената памет
Defined-By: elogind
Support: http://lists.freedesktop.org/mailman/listinfo/elogind-devel
Documentation: man:core(5)
Процес № @COREDUMP_PID@ (@COREDUMP_COMM@) заби, представянето му в паметта
бе запазено.
Най-често това се дължи на грешка в забилата програма и следва да я
докладвате на създателите на програмата.
-- 8d45620c1a4348dbb17410da57c60c66
Subject: Създадена е нова сесия № @SESSION_ID@ за потребителя „@USER_ID@“
Defined-By: elogind
Support: http://lists.freedesktop.org/mailman/listinfo/elogind-devel
Documentation: http://www.freedesktop.org/wiki/Software/elogind/multiseat
За потребителя „@USER_ID@“ е създадена нова сесия № @SESSION_ID@.
Водещият процес на сесията е: @LEADER@
-- 3354939424b4456d9802ca8333ed424a
Subject: Сесия № @SESSION_ID@ приключи
Defined-By: elogind
Support: http://lists.freedesktop.org/mailman/listinfo/elogind-devel
Documentation: http://www.freedesktop.org/wiki/Software/elogind/multiseat
Сесия № @SESSION_ID@ приключи работа.
-- fcbefc5da23d428093f97c82a9290f7b
Subject: Налично е ново работно място № @SEAT_ID@
Defined-By: elogind
Support: http://lists.freedesktop.org/mailman/listinfo/elogind-devel
Documentation: http://www.freedesktop.org/wiki/Software/elogind/multiseat
Новото работно място № @SEAT_ID@ е настроено и готово за работа.
-- e7852bfe46784ed0accde04bc864c2d5
Subject: Работното място № @SEAT_ID@ е премахнато
Defined-By: elogind
Support: http://lists.freedesktop.org/mailman/listinfo/elogind-devel
Documentation: http://www.freedesktop.org/wiki/Software/elogind/multiseat
Работното място № @SEAT_ID@ вече не е налично.
-- c7a787079b354eaaa9e77b371893cd27
Subject: Смяна на системното време
Defined-By: elogind
Support: http://lists.freedesktop.org/mailman/listinfo/elogind-devel
Часовникът на системата е сверен да сочи @REALTIME@ микросекунди след
1 януари 1970.
-- 45f82f4aef7a4bbf942ce861d1f20990
Subject: Смяна на часовия пояс да е „@TIMEZONE@“
Defined-By: elogind
Support: http://lists.freedesktop.org/mailman/listinfo/elogind-devel
Часовият пояс на системата е сменен на „@TIMEZONE@“.
-- b07a249cd024414a82dd00cd181378ff
Subject: Стартирането на системата завърши
Defined-By: elogind
Support: http://lists.freedesktop.org/mailman/listinfo/elogind-devel
Успешно са стартирали всички услуги, които са посочени за задействане при
стартиране на системата. Това не означава, че системата бездейства, защото
някои от услугите може да извършват специфични действия при стартиране.
Стартирането на ядрото отне @KERNEL_USEC@ микросекунди.
Стартирането на RAM диска за първоначално зареждане отне @INITRD_USEC@
микросекунди.
Стартирането на потребителските програми отне @USERSPACE_USEC@ микросекунди.
-- 6bbd95ee977941e497c48be27c254128
Subject: Системата е приспана на ниво „@SLEEP@“
Defined-By: elogind
Support: http://lists.freedesktop.org/mailman/listinfo/elogind-devel
Системата премина в състояние на приспиване „@SLEEP@“.
-- 8811e6df2a8e40f58a94cea26f8ebf14
Subject: Системата се събуди след приспиване на ниво„@SLEEP@“
Defined-By: elogind
Support: http://lists.freedesktop.org/mailman/listinfo/elogind-devel
Системата се събуди от състояние на приспиване „@SLEEP@“.
-- 98268866d1d54a499c4e98921d93bc40
Subject: Започна процедура на спиране на системата
Defined-By: elogind
Support: http://lists.freedesktop.org/mailman/listinfo/elogind-devel
Започна процедурата на Systemd за спиране на системата. Всички процеси и
услуги се спират, всички файлови системи се демонтират.
-- 7d4958e842da4a758f6c1cdc7b36dcc5
Subject: Модул „@UNIT@“ се стартира
Defined-By: elogind
Support: http://lists.freedesktop.org/mailman/listinfo/elogind-devel
Модулът „@UNIT@“ се стартира в момента
-- 39f53479d3a045ac8e11786248231fbf
Subject: Модул „@UNIT@“ вече е стартиран
Defined-By: elogind
Support: http://lists.freedesktop.org/mailman/listinfo/elogind-devel
Стартирането на модул „@UNIT@“ завърши.
Резултатът е: @RESULT@
-- de5b426a63be47a7b6ac3eaac82e2f6f
Subject: Модул „@UNIT@“ се спира
Defined-By: elogind
Support: http://lists.freedesktop.org/mailman/listinfo/elogind-devel
Модулът „@UNIT@“ се спира в момента.
-- 9d1aaa27d60140bd96365438aad20286
Subject: Модул „@UNIT@“ вече е спрян
Defined-By: elogind
Support: http://lists.freedesktop.org/mailman/listinfo/elogind-devel
Спирането на модул „@UNIT@“ завърши.
-- be02cf6855d2428ba40df7e9d022f03d
Subject: Модулът „@UNIT@“ не успя да стартира
Defined-By: elogind
Support: http://lists.freedesktop.org/mailman/listinfo/elogind-devel
Модулът „@UNIT@“ не успя да стартира.
Резултатът е: @RESULT@
-- d34d037fff1847e6ae669a370e694725
Subject: Модулът „@UNIT@“ започна презареждане на настройките си
Defined-By: elogind
Support: http://lists.freedesktop.org/mailman/listinfo/elogind-devel
Модулът „@UNIT@“ започна презареждане на настройките си.
-- 7b05ebc668384222baa8881179cfda54
Subject: Модулът „@UNIT@“ завърши презареждането на настройките си
Defined-By: elogind
Support: http://lists.freedesktop.org/mailman/listinfo/elogind-devel
Модулът „@UNIT@“ завърши презареждането на настройките си.
Резултатът e: @RESULT@
-- 641257651c1b4ec9a8624d7a40a9e1e7
Subject: Програмата „@EXECUTABLE@“ не успя да се стартира
Defined-By: elogind
Support: http://lists.freedesktop.org/mailman/listinfo/elogind-devel
Програмата „@EXECUTABLE@“ не успя да се стартира.
Върнатият номер на грешка е: @ERRNO@
-- 0027229ca0644181a76c4e92458afa2e
Subject: Поне едно съобщение не бе препратено към syslog
Defined-By: elogind
Support: http://lists.freedesktop.org/mailman/listinfo/elogind-devel
Поне едно съобщение не бе препратено към журналната услуга syslog, която
работи успоредно с journald.
Най-често това указва, че тази реализация на syslog не може да поеме текущия
обем съобщения.
-- 1dee0369c7fc4736b7099b38ecb46ee7
Subject: Точката за монтиране не е празна
Defined-By: elogind
Support: http://lists.freedesktop.org/mailman/listinfo/elogind-devel
Директорията „@WHERE@“ не е празна.
Тя е указана като точка за монтиране — или като второ поле във файла
„/etc/fstab“, или чрез директивата „Where=“ в някой от файловете за
модул на Systemd.
Това не пречи на самото монтиране, но вече съществуващите там файлове и
директории няма да се виждат повече, освен ако ръчно не монтирате тази
непразна директория някъде другаде.
-- 24d8d4452573402496068381a6312df2
Subject: Стартирана е виртуална машина или контейнер
Defined-By: elogind
Support: http://lists.freedesktop.org/mailman/listinfo/elogind-devel
Виртуалната машина „@NAME@“ с идентификатор на водещия процес @LEADER@
е стартирана и готова за работа.
-- 58432bd3bace477cb514b56381b8a758
Subject: Спряна е виртуална машина или контейнер
Defined-By: elogind
Support: http://lists.freedesktop.org/mailman/listinfo/elogind-devel
Виртуалната машина „@NAME@“ с идентификатор на водещия процес @LEADER@
е спряна.
-- 36db2dfa5a9045e1bd4af5f93e1cf057
Subject: Режимът DNSSEC е изключен, защото сървърът не го поддържа
Defined-By: elogind
Support: http://lists.freedesktop.org/mailman/listinfo/elogind-devel
Documentation: man:elogind-resolved.service(8) resolved.conf(5)
Локалната услуга за имена (elogind-resolved.service) установи, че
настроения сървър за DNS не поддържа DNSSEC, затова този режим е изключен.
Това се случва, когато директивата „DNSSEC=allow-downgrade“ е включена във
файла „resolved.conf“ и зададеният сървър за DNS не е съвместим с DNSSEC.
Внимавайте, защото това може да позволи атака, при която трета страна ви
връща отговори, които да предизвикат понижаването на сигурността от DNSSEC
до DNS.
Такова събитие означава, че или сървърът за DNS не е съвместим с DNSSEC,
или някой успешно ви е атакувал за понижаване на сигурността на имената.
-- 1675d7f172174098b1108bf8c7dc8f5d
Subject: Неуспешна проверка на DNSSEC
Defined-By: elogind
Support: http://lists.freedesktop.org/mailman/listinfo/elogind-devel
Documentation: man:elogind-resolved.service(8)
Заявка или запис в DNS не издържа проверка с DNSSEC.
Това обикновено показва вмешателство на трета страна в канала ви за връзка.
-- 4d4408cfd0d144859184d1e65d7c8a65
Subject: Анулирана доверена котва в DNSSEC
Defined-By: elogind
Support: http://lists.freedesktop.org/mailman/listinfo/elogind-devel
Documentation: man:elogind-resolved.service(8)
Анулирана е доверена котва за DNSSEC и трябва да настроите нова.
Понякога новата идва с обновяване на системата.

20
coccinelle/htonl.cocci

@ -1,20 +0,0 @@
@@
expression s;
@@
- htonl(s)
+ htobe32(s)
@@
expression s;
@@
- htons(s)
+ htobe16(s)
@@
expression s;
@@
- ntohl(s)
+ be32toh(s)
@@
expression s;
@@
- ntohs(s)
+ be16toh(s)

6
coccinelle/strjoina.cocci

@ -1,6 +0,0 @@
@@
expression n, m;
expression list s;
@@
- n = strjoina(m, s, NULL);
+ n = strjoina(m, s);

6
coccinelle/xsprintf.cocci

@ -1,6 +0,0 @@
@@
expression e, fmt;
expression list vaargs;
@@
- snprintf(e, sizeof(e), fmt, vaargs);
+ xsprintf(e, fmt, vaargs);

70
src/.gitignore

@ -6,3 +6,73 @@ org.freedesktop.systemd1.policy
99-systemd.rules
*.gcno
*.gcda
# directories not needed by elogind
/initctl
/libudev
/cgls
/rfkill
/resolve
/firstboot
/path
/tmpfiles
/quotacheck
/system-update-generator
/debug-generator
/sysctl
/sysv-generator
/backlight
/coredump
/modules-load
/machine-id-setup
/getty-generator
/ac-power
/gpt-auto-generator
/journal
/socket-proxy
/test
/sleep
/cgtop
/locale
/cryptsetup
/run
/binfmt
/fstab-generator
/detect-virt
/timesync
/journal-remote
/nss-mymachines
/nss-resolve
/hibernate-resume
/stdio-bridge
/hostname
/user-sessions
/nss-myhostname
/random-seed
/vconsole
/analyze
/sysusers
/notify
/kernel-install
/rc-local-generator
/nspawn
/boot
/import
/libsystemd
/escape
/systemctl
/hwdb
/network
/udev
/tty-ask-password-agent
/remount-fs
/ask-password
/timedate
/delta
/dbus1-generator
/fsck
/machine
/update-done
/libsystemd-network
/reply-password
/activate

335
src/network/networkd-brvlan.c

@ -1,335 +0,0 @@
/***
This file is part of elogind.
Copyright (C) 2016 BISDN GmbH. All rights reserved.
elogind is free software; you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
elogind 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
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with elogind; If not, see <http://www.gnu.org/licenses/>.
***/
#include <netinet/in.h>
#include <linux/if_bridge.h>
#include <stdbool.h>
#include "alloc-util.h"
#include "conf-parser.h"
#include "netlink-util.h"
#include "networkd-brvlan.h"
#include "networkd.h"
#include "parse-util.h"
#include "vlan-util.h"
static bool is_bit_set(unsigned bit, uint32_t scope) {
assert(bit < sizeof(scope)*8);
return scope & (1 << bit);
}
static inline void set_bit(unsigned nr, uint32_t *addr) {
if (nr < BRIDGE_VLAN_BITMAP_MAX)
addr[nr / 32] |= (((uint32_t) 1) << (nr % 32));
}
static inline int is_vid_valid(unsigned vid) {
if (vid > VLANID_MAX || vid == 0)
return -EINVAL;
return 0;
}
static int find_next_bit(int i, uint32_t x) {
int j;
if (i >= 32)
return -1;
/* find first bit */
if (i < 0)
return BUILTIN_FFS_U32(x);
/* mask off prior finds to get next */
j = __builtin_ffs(x >> i);
return j ? j + i : 0;
}
static int append_vlan_info_data(Link *const link, sd_netlink_message *req, uint16_t pvid, const uint32_t *br_vid_bitmap, const uint32_t *br_untagged_bitmap) {
struct bridge_vlan_info br_vlan;
int i, j, k, r, done, cnt;
uint16_t begin, end;
bool untagged = false;
assert(link);
assert(req);
assert(br_vid_bitmap);
assert(br_untagged_bitmap);
i = cnt = -1;
begin = end = UINT16_MAX;
for (k = 0; k < BRIDGE_VLAN_BITMAP_LEN; k++) {
unsigned base_bit;
uint32_t vid_map = br_vid_bitmap[k];
uint32_t untagged_map = br_untagged_bitmap[k];
base_bit = k * 32;
i = -1;
done = 0;
do {
j = find_next_bit(i, vid_map);
if (j > 0) {
/* first hit of any bit */
if (begin == UINT16_MAX && end == UINT16_MAX) {
begin = end = j - 1 + base_bit;
untagged = is_bit_set(j - 1, untagged_map);
goto next;
}
/* this bit is a continuation of prior bits */
if (j - 2 + base_bit == end && untagged == is_bit_set(j - 1, untagged_map) && (uint16_t)j - 1 + base_bit != pvid && (uint16_t)begin != pvid) {
end++;
goto next;
}
} else
done = 1;
if (begin != UINT16_MAX) {
cnt++;
if (done && k < BRIDGE_VLAN_BITMAP_LEN - 1)
break;
br_vlan.flags = 0;
if (untagged)
br_vlan.flags |= BRIDGE_VLAN_INFO_UNTAGGED;
if (begin == end) {
br_vlan.vid = begin;
if (begin == pvid)
br_vlan.flags |= BRIDGE_VLAN_INFO_PVID;
r = sd_netlink_message_append_data(req, IFLA_BRIDGE_VLAN_INFO, &br_vlan, sizeof(br_vlan));
if (r < 0)
return log_link_error_errno(link, r, "Could not append IFLA_BRIDGE_VLAN_INFO attribute: %m");
} else {
br_vlan.vid = begin;
br_vlan.flags |= BRIDGE_VLAN_INFO_RANGE_BEGIN;
r = sd_netlink_message_append_data(req, IFLA_BRIDGE_VLAN_INFO, &br_vlan, sizeof(br_vlan));
if (r < 0)
return log_link_error_errno(link, r, "Could not append IFLA_BRIDGE_VLAN_INFO attribute: %m");
br_vlan.vid = end;
br_vlan.flags &= ~BRIDGE_VLAN_INFO_RANGE_BEGIN;
br_vlan.flags |= BRIDGE_VLAN_INFO_RANGE_END;
r = sd_netlink_message_append_data(req, IFLA_BRIDGE_VLAN_INFO, &br_vlan, sizeof(br_vlan));
if (r < 0)
return log_link_error_errno(link, r, "Could not append IFLA_BRIDGE_VLAN_INFO attribute: %m");
}
if (done)
break;
}
if (j > 0) {
begin = end = j - 1 + base_bit;
untagged = is_bit_set(j - 1, untagged_map);
}
next:
i = j;
} while(!done);
}
if (!cnt)
return -EINVAL;
return cnt;
}
static int set_brvlan_handler(sd_netlink *rtnl, sd_netlink_message *m, void *userdata) {
Link *link = userdata;
int r;
assert(link);
r = sd_netlink_message_get_errno(m);
if (r < 0 && r != -EEXIST)
log_link_error_errno(link, r, "Could not add VLAN to bridge port: %m");
return 1;
}
int br_vlan_configure(Link *link, uint16_t pvid, uint32_t *br_vid_bitmap, uint32_t *br_untagged_bitmap) {
_cleanup_(sd_netlink_message_unrefp) sd_netlink_message *req = NULL;
int r;
uint16_t flags;
sd_netlink *rtnl;
assert(link);
assert(link->manager);
assert(br_vid_bitmap);
assert(br_untagged_bitmap);
assert(link->network);
/* pvid might not be in br_vid_bitmap yet */
if (pvid)
set_bit(pvid, br_vid_bitmap);
rtnl = link->manager->rtnl;
/* create new RTM message */
r = sd_rtnl_message_new_link(rtnl, &req, RTM_SETLINK, link->ifindex);
if (r < 0)
return log_link_error_errno(link, r, "Could not allocate RTM_SETLINK message: %m");
r = sd_rtnl_message_link_set_family(req, PF_BRIDGE);
if (r < 0)
return log_link_error_errno(link, r, "Could not set message family: %m");
r = sd_netlink_message_open_container(req, IFLA_AF_SPEC);
if (r < 0)
return log_link_error_errno(link, r, "Could not open IFLA_AF_SPEC container: %m");
/* master needs flag self */
if (!link->network->bridge) {
flags = BRIDGE_FLAGS_SELF;
sd_netlink_message_append_data(req, IFLA_BRIDGE_FLAGS, &flags, sizeof(uint16_t));
}
/* add vlan info */
r = append_vlan_info_data(link, req, pvid, br_vid_bitmap, br_untagged_bitmap);
if (r < 0)
return log_link_error_errno(link, r, "Could not append VLANs: %m");
r = sd_netlink_message_close_container(req);
if (r < 0)
return log_link_error_errno(link, r, "Could not close IFLA_AF_SPEC container: %m");
/* send message to the kernel */
r = sd_netlink_call_async(rtnl, req, set_brvlan_handler, link, 0, NULL);
if (r < 0)
return log_link_error_errno(link, r, "Could not send rtnetlink message: %m");
return 0;
}
static int parse_vid_range(const char *rvalue, uint16_t *vid, uint16_t *vid_end) {
int r;
char *p;
char *_rvalue = NULL;
uint16_t _vid = UINT16_MAX;
uint16_t _vid_end = UINT16_MAX;
assert(rvalue);
assert(vid);
assert(vid_end);
_rvalue = strdupa(rvalue);
p = strchr(_rvalue, '-');
if (p) {
*p = '\0';
p++;
r = parse_vlanid(_rvalue, &_vid);
if (r < 0)
return r;
if (!_vid)
return -ERANGE;
r = parse_vlanid(p, &_vid_end);
if (r < 0)
return r;
if (!_vid_end)
return -ERANGE;
} else {
r = parse_vlanid(_rvalue, &_vid);
if (r < 0)
return r;
if (!_vid)
return -ERANGE;
}
*vid = _vid;
*vid_end = _vid_end;
return r;
}
int config_parse_brvlan_vlan(const char *unit, const char *filename,
unsigned line, const char *section,
unsigned section_line, const char *lvalue,
int ltype, const char *rvalue, void *data,
void *userdata) {
Network *network = userdata;
int r;
uint16_t vid, vid_end;
assert(filename);
assert(section);
assert(lvalue);
assert(rvalue);
assert(data);
r = parse_vid_range(rvalue, &vid, &vid_end);
if (r < 0) {
log_syntax(unit, LOG_ERR, filename, line, r, "Failed to parse VLAN, ignoring: %s", rvalue);
return 0;
}
if (UINT16_MAX == vid_end)
set_bit(vid++, network->br_vid_bitmap);
else {
if (vid >= vid_end) {
log_syntax(unit, LOG_ERR, filename, line, 0, "Invalid VLAN range, ignoring %s", rvalue);
return 0;
}
for (; vid <= vid_end; vid++)
set_bit(vid, network->br_vid_bitmap);
}
return 0;
}
int config_parse_brvlan_untagged(const char *unit, const char *filename,
unsigned line, const char *section,
unsigned section_line, const char *lvalue,
int ltype, const char *rvalue, void *data,
void *userdata) {
Network *network = userdata;
int r;
uint16_t vid, vid_end;
assert(filename);
assert(section);
assert(lvalue);
assert(rvalue);
assert(data);
r = parse_vid_range(rvalue, &vid, &vid_end);
if (r < 0) {
log_syntax(unit, LOG_ERR, filename, line, r, "Could not parse VLAN: %s", rvalue);
return 0;
}
if (UINT16_MAX == vid_end) {
set_bit(vid, network->br_vid_bitmap);
set_bit(vid, network->br_untagged_bitmap);
} else {
if (vid >= vid_end) {
log_syntax(unit, LOG_ERR, filename, line, 0, "Invalid VLAN range, ignoring %s", rvalue);
return 0;
}
for (; vid <= vid_end; vid++) {
set_bit(vid, network->br_vid_bitmap);
set_bit(vid, network->br_untagged_bitmap);
}
}
return 0;
}

50
src/network/networkd-netdev-vrf.c

@ -1,50 +0,0 @@
/***
This file is part of elogind.
Copyright 2016 Andreas Rammhold <andreas@rammhold.de>
elogind is free software; you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
elogind 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
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with elogind; If not, see <http://www.gnu.org/licenses/>.
***/
#include <net/if.h>
#include "sd-netlink.h"
#include "missing.h"
#include "networkd-netdev-vrf.h"
static int netdev_vrf_fill_message_create(NetDev *netdev, Link *link, sd_netlink_message *m) {
Vrf *v;
int r;
assert(netdev);
assert(!link);
assert(m);
v = VRF(netdev);
assert(v);
r = sd_netlink_message_append_u32(m, IFLA_VRF_TABLE, v->table_id);
if (r < 0)
return log_netdev_error_errno(netdev, r, "Could not append IPLA_VRF_TABLE attribute: %m");
return r;
}
const NetDevVTable vrf_vtable = {
.object_size = sizeof(Vrf),
.sections = "Match\0NetDev\0VRF\0",
.fill_message_create = netdev_vrf_fill_message_create,
.create_type = NETDEV_CREATE_MASTER,
};

BIN
src/resolve/test-data/fake-caa.pkts

Binary file not shown.
Loading…
Cancel
Save