Skip to content

Commit 8166068

Browse files
committed
[PMTUd] add support for pmtud_get for who doesn't want notifications
Signed-off-by: Fabio M. Di Nitto <fdinitto@redhat.com>
1 parent 922b505 commit 8166068

File tree

3 files changed

+53
-0
lines changed

3 files changed

+53
-0
lines changed

libknet/handle.c

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -792,6 +792,33 @@ int knet_handle_enable_pmtud_notify(knet_handle_t knet_h,
792792
return 0;
793793
}
794794

795+
int knet_handle_pmtud_get(knet_handle_t knet_h,
796+
unsigned int *link_mtu,
797+
unsigned int *data_mtu)
798+
{
799+
int savederrno = 0;
800+
801+
if (!knet_h) {
802+
errno = EINVAL;
803+
return -1;
804+
}
805+
806+
savederrno = pthread_rwlock_rdlock(&knet_h->list_rwlock);
807+
if (savederrno) {
808+
log_err(knet_h, KNET_SUB_HANDLE, "Unable to get write lock: %s",
809+
strerror(savederrno));
810+
errno = savederrno;
811+
return -1;
812+
}
813+
814+
*link_mtu = knet_h->link_mtu;
815+
*data_mtu = knet_h->data_mtu;
816+
817+
pthread_rwlock_unlock(&knet_h->list_rwlock);
818+
819+
return 0;
820+
}
821+
795822
int knet_handle_crypto(knet_handle_t knet_h, struct knet_handle_crypto_cfg *knet_handle_crypto_cfg)
796823
{
797824
int savederrno = 0;

libknet/libknet.h

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,24 @@ int knet_handle_enable_pmtud_notify(knet_handle_t knet_h,
210210
unsigned int link_mtu,
211211
unsigned int data_mtu));
212212

213+
/*
214+
* knet_handle_pmtud_get
215+
*
216+
* knet_h - pointer to knet_handle_t
217+
*
218+
* link_mtu - pointer where to store link_mtu
219+
* data_mtu - pointer where to store data_mtu (see above)
220+
*
221+
* knet_handle_pmtud_get returns:
222+
*
223+
* 0 on success
224+
* -1 on error and errno is set.
225+
*/
226+
227+
int knet_handle_pmtud_get(knet_handle_t knet_h,
228+
unsigned int *link_mtu,
229+
unsigned int *data_mtu);
230+
213231
/*
214232
* knet_handle_crypto
215233
*

libknet/ping_test.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,7 @@ int main(int argc, char *argv[])
282282
size_t host_ids_entries = 0;
283283
//int has_crypto = 0;
284284
int logfd;
285+
unsigned int link_mtu = 0, data_mtu = 0;
285286

286287
if (argc < 3) {
287288
print_usage(argv[0]);
@@ -319,6 +320,13 @@ int main(int argc, char *argv[])
319320
exit(EXIT_FAILURE);
320321
}
321322

323+
if (knet_handle_pmtud_get(knet_h, &link_mtu, &data_mtu)) {
324+
printf("Unable to get PMTUd current values\n");
325+
exit(EXIT_FAILURE);
326+
} else {
327+
printf("Current PMTUd: link %u data %u\n", link_mtu, data_mtu);
328+
}
329+
322330
if (knet_handle_enable_pmtud_notify(knet_h, pmtud_notify)) {
323331
printf("Unable to install PMTUd notification callback\n");
324332
exit(EXIT_FAILURE);

0 commit comments

Comments
 (0)