]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-ndisc-router: introduce sd_ndisc_router_set_sender_address()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 6 Mar 2024 03:28:51 +0000 (12:28 +0900)
committerLuca Boccassi <luca.boccassi@gmail.com>
Wed, 27 Mar 2024 13:13:12 +0000 (13:13 +0000)
Currently this is not used, but will be used later to modify the sender
address.

src/libsystemd-network/icmp6-packet.c
src/libsystemd-network/icmp6-packet.h
src/libsystemd-network/sd-ndisc-router.c
src/systemd/sd-ndisc-router.h

index 35459d11a29003a81c18ed0347880b4889e4703f..21d744beaa49b84f6d5d708d5049b1fba67dc0b9 100644 (file)
@@ -27,6 +27,17 @@ static ICMP6Packet* icmp6_packet_new(size_t size) {
         return p;
 }
 
+int icmp6_packet_set_sender_address(ICMP6Packet *p, const struct in6_addr *addr) {
+        assert(p);
+
+        if (addr)
+                p->sender_address = *addr;
+        else
+                p->sender_address = (const struct in6_addr) {};
+
+        return 0;
+}
+
 int icmp6_packet_get_sender_address(ICMP6Packet *p, struct in6_addr *ret) {
         assert(p);
 
index 7d02534a8c27c84042b7f2960149e063ae906d41..16f354fc95a4fc033f4c89fa79ff7def60373c0f 100644 (file)
@@ -21,6 +21,7 @@ ICMP6Packet* icmp6_packet_ref(ICMP6Packet *p);
 ICMP6Packet* icmp6_packet_unref(ICMP6Packet *p);
 DEFINE_TRIVIAL_CLEANUP_FUNC(ICMP6Packet*, icmp6_packet_unref);
 
+int icmp6_packet_set_sender_address(ICMP6Packet *p, const struct in6_addr *addr);
 int icmp6_packet_get_sender_address(ICMP6Packet *p, struct in6_addr *ret);
 int icmp6_packet_get_timestamp(ICMP6Packet *p, clockid_t clock, usec_t *ret);
 const struct icmp6_hdr* icmp6_packet_get_header(ICMP6Packet *p);
index 4b4cc530a69021ad1c61b9f41c7327b906539b23..f8476c4d6bd7fca2ad3a7f038cbe10a6afa3ae80 100644 (file)
@@ -40,6 +40,12 @@ sd_ndisc_router* ndisc_router_new(ICMP6Packet *packet) {
         return rt;
 }
 
+int sd_ndisc_router_set_sender_address(sd_ndisc_router *rt, const struct in6_addr *addr) {
+        assert_return(rt, -EINVAL);
+
+        return icmp6_packet_set_sender_address(rt->packet, addr);
+}
+
 int sd_ndisc_router_get_sender_address(sd_ndisc_router *rt, struct in6_addr *ret) {
         assert_return(rt, -EINVAL);
 
index 32ee5796e634e04a84d018539c05f26c84d1edc1..b07fefba3b9e4415b913c74d2590afd7a7627210 100644 (file)
@@ -33,6 +33,7 @@ sd_ndisc_router *sd_ndisc_router_ref(sd_ndisc_router *rt);
 sd_ndisc_router *sd_ndisc_router_unref(sd_ndisc_router *rt);
 _SD_DEFINE_POINTER_CLEANUP_FUNC(sd_ndisc_router, sd_ndisc_router_unref);
 
+int sd_ndisc_router_set_sender_address(sd_ndisc_router *rt, const struct in6_addr *addr);
 int sd_ndisc_router_get_sender_address(sd_ndisc_router *rt, struct in6_addr *ret);
 int sd_ndisc_router_get_timestamp(sd_ndisc_router *rt, clockid_t clock, uint64_t *ret);