lists.osmocom.org
Sign In Sign Up
Manage this list Sign In Sign Up

Keyboard Shortcuts

Thread View

  • j: Next unread message
  • k: Previous unread message
  • j a: Jump to all threads
  • j l: Jump to MailingList overview

gerrit-log

Thread Start a new thread
Download
Threads by month
  • ----- 2026 -----
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2025 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2024 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2023 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2022 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
gerrit-log@lists.osmocom.org

October 2024

  • 1 participants
  • 1631 discussions
[S] Change in osmo-ttcn3-hacks[master]: ggsn: Request osmo-ggsn to apply the MTU on the tundev
by pespin 22 Oct '24

22 Oct '24
pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/38495?usp=email ) Change subject: ggsn: Request osmo-ggsn to apply the MTU on the tundev ...................................................................... ggsn: Request osmo-ggsn to apply the MTU on the tundev Depends: osmo-ggsn.git Change-Id Ifae556169d895860812c9ea5633292d7e3fab338 Related: OS#6298 Related: SYS#7122 Change-Id: Ie55c8b41f5a4a128f999474c3fad1926099b3624 --- M ggsn_tests/GGSN_Tests.ttcn 1 file changed, 9 insertions(+), 3 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/95/38495/1 diff --git a/ggsn_tests/GGSN_Tests.ttcn b/ggsn_tests/GGSN_Tests.ttcn index 8b1a6e7..e6c6be0 100644 --- a/ggsn_tests/GGSN_Tests.ttcn +++ b/ggsn_tests/GGSN_Tests.ttcn @@ -234,13 +234,19 @@ } /* -1 = osmo-ggsn default mtu */ - private function f_vty_set_mtu(integer mtu) runs on GT_CT { + private function f_vty_set_mtu(integer mtu, boolean do_apply := true) runs on GT_CT { + var charstring val_str; + var charstring apply_str := ""; var charstring mtu_cmd; if (mtu >= 0) { - mtu_cmd := "mtu " & int2str(mtu); + val_str := int2str(mtu); } else { - mtu_cmd := "mtu default"; + val_str := "default"; } + if (do_apply) { + apply_str := " apply" + } + mtu_cmd := "mtu " & val_str & apply_str; f_vty_enter_config(GGSNVTY); f_vty_transceive(GGSNVTY, "ggsn ggsn0"); -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/38495?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: Ie55c8b41f5a4a128f999474c3fad1926099b3624 Gerrit-Change-Number: 38495 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de>
1 0
0 0
[XS] Change in libosmocore[master]: core/tun.c: Fix wrong documentation ret type in tundev_open_fd()
by pespin 22 Oct '24

22 Oct '24
pespin has submitted this change. ( https://gerrit.osmocom.org/c/libosmocore/+/38476?usp=email ) Change subject: core/tun.c: Fix wrong documentation ret type in tundev_open_fd() ...................................................................... core/tun.c: Fix wrong documentation ret type in tundev_open_fd() Change-Id: I208821cf216c2a700caf6517a885cf44fc6958e1 --- M src/core/tun.c 1 file changed, 1 insertion(+), 1 deletion(-) Approvals: pespin: Looks good to me, approved Jenkins Builder: Verified laforge: Looks good to me, but someone else must approve diff --git a/src/core/tun.c b/src/core/tun.c index 04a1972..28cec34 100644 --- a/src/core/tun.c +++ b/src/core/tun.c @@ -268,7 +268,7 @@ /*! Open and configure fd of the tunnel device. * \param[in] tundev The tundev object whose tunnel interface to open * \param[in] flags internal linux flags to pass when creating the device (not used yet) - * \returns 0 on success; negative on error + * \returns tun fd on success; negative on error */ static int tundev_open_fd(struct osmo_tundev *tundev, int flags) { -- To view, visit https://gerrit.osmocom.org/c/libosmocore/+/38476?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Change-Id: I208821cf216c2a700caf6517a885cf44fc6958e1 Gerrit-Change-Number: 38476 Gerrit-PatchSet: 2 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
1 0
0 0
[XS] Change in libosmocore[master]: core/tun.c: Fix wrong documentation ret type in tundev_open_fd()
by pespin 22 Oct '24

22 Oct '24
Attention is currently required from: osmith. pespin has posted comments on this change by pespin. ( https://gerrit.osmocom.org/c/libosmocore/+/38476?usp=email ) Change subject: core/tun.c: Fix wrong documentation ret type in tundev_open_fd() ...................................................................... Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/c/libosmocore/+/38476?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: comment Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Change-Id: I208821cf216c2a700caf6517a885cf44fc6958e1 Gerrit-Change-Number: 38476 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-Attention: osmith <osmith(a)sysmocom.de> Gerrit-Comment-Date: Tue, 22 Oct 2024 10:29:23 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes
1 0
0 0
[M] Change in libosmocore[master]: core/netdev: Add API osmo_netdev_set_mtu()
by pespin 22 Oct '24

22 Oct '24
pespin has submitted this change. ( https://gerrit.osmocom.org/c/libosmocore/+/38481?usp=email ) Change subject: core/netdev: Add API osmo_netdev_set_mtu() ...................................................................... core/netdev: Add API osmo_netdev_set_mtu() This API will be used by osmo-ggsn to set the MTU of the tun device created to handle an APN. Related: OS#6298 Related: SYS#7122 Change-Id: I705d71813090f8af5a578d2a1f5920fece03bc5f --- M TODO-RELEASE M include/osmocom/core/netdev.h M src/core/libosmocore.map M src/core/netdev.c 4 files changed, 67 insertions(+), 2 deletions(-) Approvals: Jenkins Builder: Verified pespin: Looks good to me, approved osmith: Looks good to me, but someone else must approve diff --git a/TODO-RELEASE b/TODO-RELEASE index b3e4742..80387fa 100644 --- a/TODO-RELEASE +++ b/TODO-RELEASE @@ -9,4 +9,5 @@ #library what description / commit summary line gb ADD add bssgp_parse_cell_id2/bssgp_create_cell_id2 gsm ADD add osmo_rai_to_gprs/gprs_rai_to_osmo -core ADD add API osmo_tundev_get_fd() \ No newline at end of file +core ADD add API osmo_tundev_get_fd() +core ADD add API osmo_netdev_set_mtu() \ No newline at end of file diff --git a/include/osmocom/core/netdev.h b/include/osmocom/core/netdev.h index 3238ec3..fb0f124 100644 --- a/include/osmocom/core/netdev.h +++ b/include/osmocom/core/netdev.h @@ -36,6 +36,8 @@ int osmo_netdev_set_netns_name(struct osmo_netdev *netdev, const char *netns); const char *osmo_netdev_get_netns_name(const struct osmo_netdev *netdev); +int osmo_netdev_set_mtu(struct osmo_netdev *netdev, uint32_t mtu); + void osmo_netdev_set_ifupdown_ind_cb(struct osmo_netdev *netdev, osmo_netdev_ifupdown_ind_cb_t ifupdown_ind_cb); void osmo_netdev_set_dev_name_chg_cb(struct osmo_netdev *netdev, osmo_netdev_dev_name_chg_cb_t dev_name_chg_cb); void osmo_netdev_set_mtu_chg_cb(struct osmo_netdev *netdev, osmo_netdev_mtu_chg_cb_t mtu_chg_cb); diff --git a/src/core/libosmocore.map b/src/core/libosmocore.map index c48a2b9..cd5dc94 100644 --- a/src/core/libosmocore.map +++ b/src/core/libosmocore.map @@ -321,6 +321,7 @@ osmo_netdev_set_dev_name_chg_cb; osmo_netdev_set_ifindex; osmo_netdev_set_ifupdown_ind_cb; +osmo_netdev_set_mtu; osmo_netdev_set_mtu_chg_cb; osmo_netdev_set_netns_name; osmo_netdev_set_priv_data; diff --git a/src/core/netdev.c b/src/core/netdev.c index 7ef7657..8e7fc28 100644 --- a/src/core/netdev.c +++ b/src/core/netdev.c @@ -68,7 +68,7 @@ #include <stdio.h> #include <stdlib.h> -#include <stdio.h> +#include <inttypes.h> #include <fcntl.h> #include <unistd.h> #include <errno.h> @@ -531,6 +531,35 @@ return 0; } +static int netdev_mnl_set_mtu(struct osmo_mnl *omnl, unsigned int if_index, + const char *dev_name, uint32_t mtu) +{ + char buf[MNL_SOCKET_BUFFER_SIZE]; + struct nlmsghdr *nlh = mnl_nlmsg_put_header(buf); + struct ifinfomsg *ifm; + unsigned int change = 0; + unsigned int flags = 0; + + nlh->nlmsg_type = RTM_NEWLINK; + nlh->nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK; + nlh->nlmsg_seq = time(NULL); + + ifm = mnl_nlmsg_put_extra_header(nlh, sizeof(*ifm)); + ifm->ifi_family = AF_UNSPEC; + ifm->ifi_change = change; + ifm->ifi_flags = flags; + ifm->ifi_index = if_index; + + mnl_attr_put_u32(nlh, IFLA_MTU, mtu); + + if (mnl_socket_sendto(omnl->mnls, nlh, nlh->nlmsg_len) < 0) { + LOGP(DLGLOBAL, LOGL_ERROR, "mnl_socket_sendto\n"); + return -EIO; + } + + return 0; +} + static int netdev_mnl_add_addr(struct osmo_mnl *omnl, unsigned int if_index, const struct osmo_sockaddr *osa, uint8_t prefix) { char buf[MNL_SOCKET_BUFFER_SIZE]; @@ -857,6 +886,38 @@ return netdev->dev_name; } +/*! Set the MTU of the network interface + * \param[in] netdev The netdev object where the field is set + * \param[in] mtu The MTU to be set on the network interface + * \returns 0 on success; negative on error + * + */ +int osmo_netdev_set_mtu(struct osmo_netdev *netdev, uint32_t mtu) +{ + struct osmo_netns_switch_state switch_state; + int rc; + + if (!netdev->registered) + return -ENODEV; + + LOGNETDEV(netdev, LOGL_NOTICE, "Setting dev %s MTU %" PRIu32 "\n", + netdev->dev_name, mtu); + + NETDEV_NETNS_ENTER(netdev, &switch_state, "set_mtu"); + +#if ENABLE_LIBMNL + rc = netdev_mnl_set_mtu(netdev->netns_ctx->omnl, netdev->ifindex, + netdev->dev_name, mtu); +#else + LOGNETDEV(netdev, LOGL_ERROR, "%s: NOT SUPPORTED. Build libosmocore with --enable-libmnl.\n", __func__); + rc = -ENOTSUP; +#endif + + NETDEV_NETNS_EXIT(netdev, &switch_state, "set_mtu"); + + return rc; +} + /*! Bring netdev interface UP or DOWN. * \param[in] netdev The netdev object managing the netdev interface * \param[in] ifupdown true to set the interface UP, false to set it DOWN -- To view, visit https://gerrit.osmocom.org/c/libosmocore/+/38481?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Change-Id: I705d71813090f8af5a578d2a1f5920fece03bc5f Gerrit-Change-Number: 38481 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: lynxis lazus <lynxis(a)fe80.eu> Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
1 0
0 0
[M] Change in libosmocore[master]: core/netdev: Add API osmo_netdev_set_mtu()
by pespin 22 Oct '24

22 Oct '24
Attention is currently required from: fixeria, lynxis lazus. pespin has posted comments on this change by pespin. ( https://gerrit.osmocom.org/c/libosmocore/+/38481?usp=email ) Change subject: core/netdev: Add API osmo_netdev_set_mtu() ...................................................................... Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/c/libosmocore/+/38481?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: comment Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Change-Id: I705d71813090f8af5a578d2a1f5920fece03bc5f Gerrit-Change-Number: 38481 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: lynxis lazus <lynxis(a)fe80.eu> Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Attention: lynxis lazus <lynxis(a)fe80.eu> Gerrit-Comment-Date: Tue, 22 Oct 2024 10:27:25 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes
1 0
0 0
[S] Change in osmo-ggsn[master]: ggsn: Support announcing APN MTU over ICMPv6 RA
by pespin 22 Oct '24

22 Oct '24
pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ggsn/+/38470?usp=email ) Change subject: ggsn: Support announcing APN MTU over ICMPv6 RA ...................................................................... ggsn: Support announcing APN MTU over ICMPv6 RA Related: OS#6298 Related: SYS#7122 Change-Id: I8bb67915dd5f39ad9ffb80e5aaf9af1e7d70c96c --- M ggsn/ggsn.c M lib/icmpv6.c M lib/icmpv6.h 3 files changed, 33 insertions(+), 3 deletions(-) Approvals: lynxis lazus: Looks good to me, but someone else must approve Jenkins Builder: Verified laforge: Looks good to me, but someone else must approve pespin: Looks good to me, approved osmith: Looks good to me, but someone else must approve diff --git a/ggsn/ggsn.c b/ggsn/ggsn.c index 4dc0c94..19b0132 100644 --- a/ggsn/ggsn.c +++ b/ggsn/ggsn.c @@ -774,7 +774,7 @@ /* daddr: all-routers multicast addr */ if (IN6_ARE_ADDR_EQUAL(&ip6h->ip6_dst, &all_router_mcast_addr)) return handle_router_mcast(pdp->gsn, pdp, &peer->addr.v6, - &apn->v6_lladdr, pack, len); + &apn->v6_lladdr, apn->cfg.mtu, pack, len); break; case 4: peer = pdp_get_peer_ipv(pdp, false); diff --git a/lib/icmpv6.c b/lib/icmpv6.c index b6994cd..e74fb70 100644 --- a/lib/icmpv6.c +++ b/lib/icmpv6.c @@ -94,11 +94,13 @@ * \returns callee-allocated message buffer containing router advertisement */ static struct msgb *icmpv6_construct_ra(const struct in6_addr *saddr, const struct in6_addr *daddr, - const struct in6_addr *prefix) + const struct in6_addr *prefix, + uint32_t mtu) { struct msgb *msg = msgb_alloc_headroom(512,128, "IPv6 RA"); struct icmpv6_radv_hdr *ra; struct icmpv6_opt_prefix *ra_opt_pref; + struct icmpv6_opt_mtu *ra_opt_mtu; OSMO_ASSERT(msg); @@ -135,6 +137,25 @@ ra_opt_pref->res2 = 0; memcpy(ra_opt_pref->prefix, prefix, sizeof(ra_opt_pref->prefix)); + /* RFC4861 Section 4.6.4, MTU */ + ra_opt_mtu = (struct icmpv6_opt_mtu *) msgb_put(msg, sizeof(*ra_opt_mtu)); + ra_opt_mtu->hdr.type = 5; /* RFC4861 4.6.4 */ + ra_opt_mtu->hdr.len = 1; /* RFC4861 4.6.4 */ + ra_opt_mtu->reserved = 0; + ra_opt_mtu->mtu = htonl(mtu); + + /* The Prefix is contained in the Prefix Information Option of + * the Router Advertisements and shall have the A-flag set + * and the L-flag cleared */ + ra_opt_pref->a = 1; + ra_opt_pref->l = 0; + ra_opt_pref->res = 0; + /* The lifetime of the prefix shall be set to infinity */ + ra_opt_pref->valid_lifetime = htonl(GGSN_AdvValidLifetime); + ra_opt_pref->preferred_lifetime = htonl(GGSN_AdvPreferredLifetime); + ra_opt_pref->res2 = 0; + memcpy(ra_opt_pref->prefix, prefix, sizeof(ra_opt_pref->prefix)); + /* checksum */ ra->hdr.csum = icmpv6_prepend_ip6hdr(msg, saddr, daddr); @@ -194,6 +215,7 @@ int handle_router_mcast(struct gsn_t *gsn, struct pdp_t *pdp, const struct in6_addr *pdp_prefix, const struct in6_addr *own_ll_addr, + uint32_t mtu, const uint8_t *pack, unsigned len) { const struct ip6_hdr *ip6h = (struct ip6_hdr *)pack; @@ -230,7 +252,7 @@ /* Send router advertisement from GGSN link-local * address to MS link-local address, including prefix * allocated to this PDP context */ - msg = icmpv6_construct_ra(own_ll_addr, &ip6h->ip6_src, pdp_prefix); + msg = icmpv6_construct_ra(own_ll_addr, &ip6h->ip6_src, pdp_prefix, mtu); /* Send the constructed RA to the MS */ gtp_data_req(gsn, pdp, msgb_data(msg), msgb_length(msg)); msgb_free(msg); diff --git a/lib/icmpv6.h b/lib/icmpv6.h index 5bed5c6..1040600 100644 --- a/lib/icmpv6.h +++ b/lib/icmpv6.h @@ -81,6 +81,13 @@ uint8_t prefix[16]; } __attribute__ ((packed)); +/* RFC4861 Section 4.6.4 */ +struct icmpv6_opt_mtu { + struct icmpv6_opt_hdr hdr; + uint16_t reserved; + uint32_t mtu; +} __attribute__ ((packed)); + uint16_t icmpv6_prepend_ip6hdr(struct msgb *msg, const struct in6_addr *saddr, const struct in6_addr *daddr); @@ -89,6 +96,7 @@ int handle_router_mcast(struct gsn_t *gsn, struct pdp_t *pdp, const struct in6_addr *pdp_prefix, const struct in6_addr *own_ll_addr, + uint32_t mtu, const uint8_t *pack, unsigned len); struct icmpv6_radv_hdr *icmpv6_validate_router_adv(const uint8_t *pack, unsigned len); -- To view, visit https://gerrit.osmocom.org/c/osmo-ggsn/+/38470?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Change-Id: I8bb67915dd5f39ad9ffb80e5aaf9af1e7d70c96c Gerrit-Change-Number: 38470 Gerrit-PatchSet: 3 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: daniel <dwillmann(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: lynxis lazus <lynxis(a)fe80.eu> Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
1 0
0 0
[S] Change in osmo-ggsn[master]: ggsn: Support announcing APN MTU over PCO
by pespin 22 Oct '24

22 Oct '24
pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ggsn/+/38457?usp=email ) Change subject: ggsn: Support announcing APN MTU over PCO ...................................................................... ggsn: Support announcing APN MTU over PCO This is only useful for IPv4 (or IPv4v6) APNs. IPv6 APNs obtain this information from SLAAC RA. Related: OS#6298 Related: SYS#7122 Change-Id: I8532acfffadda9e83962b30e4f6b17eb8b3362ac --- M ggsn/ggsn.c M ggsn/ggsn.h M ggsn/ggsn_vty.c M ggsn/pco.c 4 files changed, 45 insertions(+), 0 deletions(-) Approvals: Jenkins Builder: Verified pespin: Looks good to me, approved lynxis lazus: Looks good to me, but someone else must approve osmith: Looks good to me, but someone else must approve diff --git a/ggsn/ggsn.c b/ggsn/ggsn.c index 650150a..4dc0c94 100644 --- a/ggsn/ggsn.c +++ b/ggsn/ggsn.c @@ -107,6 +107,7 @@ apn->cfg.name = talloc_strdup(apn, name); apn->cfg.shutdown = true; apn->cfg.tx_gpdu_seq = true; + apn->cfg.mtu = MAX_DESIRED_APN_MTU; INIT_LLIST_HEAD(&apn->cfg.name_list); llist_add_tail(&apn->list, &ggsn->apn_list); diff --git a/ggsn/ggsn.h b/ggsn/ggsn.h index 7a3204f..7073575 100644 --- a/ggsn/ggsn.h +++ b/ggsn/ggsn.h @@ -21,6 +21,19 @@ #define APN_TYPE_IPv6 0x02 /* v6-only */ #define APN_TYPE_IPv4v6 0x04 /* v4v6 dual-stack */ +/* The maximum sane MTU over GTP-U somebody may wish to configure: + * 9000 bytes aka jumbo frames. */ +#define MAX_POSSIBLE_APN_MTU 9000 + +/* See 3GPP TS 23.060 Annex C: */ +#define ETHERNET_MTU 1500 +#define IPV4_HDR_MAX_SIZE 60 +#define IPV6_HDR_MAX_SIZE 40 /* Assume no extension headers in general... */ +#define UDP_HDR_MAX_SIZE 8 +#define GTPU_HDR_MAX_SIZE 12 /* Assume no extension headers in general... */ +#define MAX_DESIRED_APN_MTU ((ETHERNET_MTU) - (GTPU_HDR_MAX_SIZE) - (UDP_HDR_MAX_SIZE) - (IPV4_HDR_MAX_SIZE)) +/* MAX_DESIRED_APN_MTU = 1500 - 60 - 8 - 12 = 1500 - 80 = 1420 */ + struct ggsn_ctx; struct apn_ctx_ip { @@ -70,6 +83,8 @@ bool shutdown; /* transmit G-PDU sequence numbers (true) or not (false) */ bool tx_gpdu_seq; + /* MTU announced to the UE */ + uint16_t mtu; } cfg; /* corresponding tun device */ diff --git a/ggsn/ggsn_vty.c b/ggsn/ggsn_vty.c index 3e139c3..eda0096 100644 --- a/ggsn/ggsn_vty.c +++ b/ggsn/ggsn_vty.c @@ -419,6 +419,22 @@ return CMD_SUCCESS; } +/* MAX_POSSIBLE_APN_MTU = 9000 + * MAX_DESIRED_APN_MTU = 1420 */ +DEFUN(cfg_apn_mtu, cfg_apn_mtu_cmd, + "mtu (<0-" OSMO_STRINGIFY_VAL(MAX_POSSIBLE_APN_MTU) ">|default)", + "Configure announced MTU\n" + "MTU of the APN, announced to the UE\n" + "Default value of the MTU of the APN (1420)\n") +{ + struct apn_ctx *apn = (struct apn_ctx *) vty->index; + if (strcmp(argv[0], "default") == 0) + apn->cfg.mtu = MAX_DESIRED_APN_MTU; + else + apn->cfg.mtu = atoi(argv[0]); + return CMD_SUCCESS; +} + DEFUN(cfg_apn_ipup_script, cfg_apn_ipup_script_cmd, "ipup-script PATH", "Configure name/path of ip-up script\n" @@ -689,6 +705,8 @@ VTY_NEWLINE); } + vty_out(vty, " mtu %" PRIu16 "%s", apn->cfg.mtu, VTY_NEWLINE); + if (!apn->cfg.tx_gpdu_seq) vty_out(vty, " no g-pdu tx-sequence-numbers%s", VTY_NEWLINE); @@ -1066,6 +1084,7 @@ install_element(APN_NODE, &cfg_apn_type_support_cmd); install_element(APN_NODE, &cfg_apn_no_type_support_cmd); install_element(APN_NODE, &cfg_apn_tun_dev_name_cmd); + install_element(APN_NODE, &cfg_apn_mtu_cmd); install_element(APN_NODE, &cfg_apn_ipup_script_cmd); install_element(APN_NODE, &cfg_apn_no_ipup_script_cmd); install_element(APN_NODE, &cfg_apn_ipdown_script_cmd); diff --git a/ggsn/pco.c b/ggsn/pco.c index c71f07d..b4ffacb 100644 --- a/ggsn/pco.c +++ b/ggsn/pco.c @@ -198,6 +198,13 @@ LOGPPDP(LOGL_NOTICE, pdp, "MS requested IPv4 DNS, but APN has none configured\n"); } +static void process_pco_element_link_mtu_ipv4(const struct pco_element *pco_elem, struct msgb *resp, + const struct apn_ctx *apn, struct pdp_t *pdp) +{ + const uint16_t val_be = osmo_htons(apn->cfg.mtu); + msgb_t16lv_put(resp, PCO_P_IPv4_LINK_MTU, 2, (const uint8_t *)&val_be); +} + static void process_pco_element(const struct pco_element *pco_elem, struct msgb *resp, const struct apn_ctx *apn, struct pdp_t *pdp) { @@ -217,6 +224,9 @@ case PCO_P_DNS_IPv4_ADDR: process_pco_element_dns_ipv4(pco_elem, resp, apn, pdp); break; + case PCO_P_IPv4_LINK_MTU: + process_pco_element_link_mtu_ipv4(pco_elem, resp, apn, pdp); + break; default: LOGPPDP(LOGL_INFO, pdp, "Unknown/Unimplemented PCO Protocol 0x%04x: %s\n", protocol_id, osmo_hexdump_nospc(pco_elem->data, pco_elem->length)); -- To view, visit https://gerrit.osmocom.org/c/osmo-ggsn/+/38457?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Change-Id: I8532acfffadda9e83962b30e4f6b17eb8b3362ac Gerrit-Change-Number: 38457 Gerrit-PatchSet: 5 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: lynxis lazus <lynxis(a)fe80.eu> Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
1 0
0 0
[S] Change in osmo-ggsn[master]: ggsn: Support announcing APN MTU over ICMPv6 RA
by pespin 22 Oct '24

22 Oct '24
Attention is currently required from: daniel. pespin has posted comments on this change by pespin. ( https://gerrit.osmocom.org/c/osmo-ggsn/+/38470?usp=email ) Change subject: ggsn: Support announcing APN MTU over ICMPv6 RA ...................................................................... Patch Set 3: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/c/osmo-ggsn/+/38470?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: comment Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Change-Id: I8bb67915dd5f39ad9ffb80e5aaf9af1e7d70c96c Gerrit-Change-Number: 38470 Gerrit-PatchSet: 3 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: daniel <dwillmann(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: lynxis lazus <lynxis(a)fe80.eu> Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-Attention: daniel <dwillmann(a)sysmocom.de> Gerrit-Comment-Date: Tue, 22 Oct 2024 10:26:37 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes
1 0
0 0
[S] Change in osmo-ggsn[master]: ggsn: Support announcing APN MTU over PCO
by pespin 22 Oct '24

22 Oct '24
Attention is currently required from: fixeria, laforge, lynxis lazus. pespin has posted comments on this change by pespin. ( https://gerrit.osmocom.org/c/osmo-ggsn/+/38457?usp=email ) Change subject: ggsn: Support announcing APN MTU over PCO ...................................................................... Patch Set 5: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/c/osmo-ggsn/+/38457?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: comment Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Change-Id: I8532acfffadda9e83962b30e4f6b17eb8b3362ac Gerrit-Change-Number: 38457 Gerrit-PatchSet: 5 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: lynxis lazus <lynxis(a)fe80.eu> Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-Attention: laforge <laforge(a)osmocom.org> Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Attention: lynxis lazus <lynxis(a)fe80.eu> Gerrit-Comment-Date: Tue, 22 Oct 2024 10:26:31 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes
1 0
0 0
[S] Change in libosmocore[master]: core/tun: Add API osmo_tundev_get_fd
by pespin 22 Oct '24

22 Oct '24
pespin has submitted this change. ( https://gerrit.osmocom.org/c/libosmocore/+/38479?usp=email ) Change subject: core/tun: Add API osmo_tundev_get_fd ...................................................................... core/tun: Add API osmo_tundev_get_fd Change-Id: Ia8a7e7ec6d96c7aebc80528236a0e0d035e7f38d --- M TODO-RELEASE M include/osmocom/core/tun.h M src/core/libosmocore.map M src/core/tun.c 4 files changed, 13 insertions(+), 0 deletions(-) Approvals: osmith: Looks good to me, but someone else must approve pespin: Looks good to me, approved Jenkins Builder: Verified laforge: Looks good to me, but someone else must approve diff --git a/TODO-RELEASE b/TODO-RELEASE index 8a1e0dc..b3e4742 100644 --- a/TODO-RELEASE +++ b/TODO-RELEASE @@ -9,3 +9,4 @@ #library what description / commit summary line gb ADD add bssgp_parse_cell_id2/bssgp_create_cell_id2 gsm ADD add osmo_rai_to_gprs/gprs_rai_to_osmo +core ADD add API osmo_tundev_get_fd() \ No newline at end of file diff --git a/include/osmocom/core/tun.h b/include/osmocom/core/tun.h index 86bd8df..21e7703 100644 --- a/include/osmocom/core/tun.h +++ b/include/osmocom/core/tun.h @@ -29,6 +29,8 @@ const char *osmo_tundev_get_name(const struct osmo_tundev *tundev); +int osmo_tundev_get_fd(const struct osmo_tundev *tundev); + int osmo_tundev_set_dev_name(struct osmo_tundev *tundev, const char *dev_name); const char *osmo_tundev_get_dev_name(const struct osmo_tundev *tundev); diff --git a/src/core/libosmocore.map b/src/core/libosmocore.map index c5ab6e3..c48a2b9 100644 --- a/src/core/libosmocore.map +++ b/src/core/libosmocore.map @@ -569,6 +569,7 @@ osmo_tundev_close; osmo_tundev_free; osmo_tundev_get_dev_name; +osmo_tundev_get_fd; osmo_tundev_get_name; osmo_tundev_get_netdev; osmo_tundev_get_netns_name; diff --git a/src/core/tun.c b/src/core/tun.c index ec68a96..04a1972 100644 --- a/src/core/tun.c +++ b/src/core/tun.c @@ -489,6 +489,15 @@ return tundev->name; } +/*! Get FD associated to the tundev object. + * \param[in] tundev The tundev object from where to retrieve the field + * \returns The fd of the currently open tundev, negative otherwise + */ +int osmo_tundev_get_fd(const struct osmo_tundev *tundev) +{ + return tundev->wqueue.bfd.fd; +} + /*! Set name used to name the tunnel interface created by the tundev object. * \param[in] tundev The tundev object where the field is set * \param[in] dev_name The tunnel interface name to use -- To view, visit https://gerrit.osmocom.org/c/libosmocore/+/38479?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Change-Id: Ia8a7e7ec6d96c7aebc80528236a0e0d035e7f38d Gerrit-Change-Number: 38479 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: lynxis lazus <lynxis(a)fe80.eu> Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
1 0
0 0
  • ← Newer
  • 1
  • ...
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • ...
  • 164
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.