Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/samples/bpf/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 1 kB image not shown  

Quelle  tcp_synrto_kern.c   Sprache: C

 
/* Copyright (c) 2017 Facebook
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of version 2 of the GNU General Public
 * License as published by the Free Software Foundation.
 *
 * BPF program to set SYN and SYN-ACK RTOs to 10ms when using IPv6 addresses
 * and the first 5.5 bytes of the IPv6 addresses are the same (in this example
 * that means both hosts are in the same datacenter).
 *
 * Use "bpftool cgroup attach $cg sock_ops $prog" to load this BPF program.
 */


#include <uapi/linux/bpf.h>
#include <uapi/linux/if_ether.h>
#include <uapi/linux/if_packet.h>
#include <uapi/linux/ip.h>
#include <linux/socket.h>
#include <bpf/bpf_helpers.h>
#include <bpf/bpf_endian.h>

#define DEBUG 1

SEC("sockops")
int bpf_synrto(struct bpf_sock_ops *skops)
{
 int rv = -1;
 int op;

 /* For testing purposes, only execute rest of BPF program
 * if neither port numberis 55601
 */

 if (bpf_ntohl(skops->remote_port) != 55601 &&
     skops->local_port != 55601) {
  skops->reply = -1;
  return 1;
 }

 op = (int) skops->op;

#ifdef DEBUG
 bpf_printk("BPF command: %d\n", op);
#endif

 /* Check for TIMEOUT_INIT operation and IPv6 addresses */
 if (op == BPF_SOCK_OPS_TIMEOUT_INIT &&
  skops->family == AF_INET6) {

  /* If the first 5.5 bytes of the IPv6 address are the same
 * then both hosts are in the same datacenter
 * so use an RTO of 10ms
 */

  if (skops->local_ip6[0] == skops->remote_ip6[0] &&
      (bpf_ntohl(skops->local_ip6[1]) & 0xfff00000) ==
      (bpf_ntohl(skops->remote_ip6[1]) & 0xfff00000))
   rv = 10;
 }
#ifdef DEBUG
 bpf_printk("Returning %d\n", rv);
#endif
 skops->reply = rv;
 return 1;
}
char _license[] SEC("license") = "GPL";

Messung V0.5
C=95 H=100 G=97

¤ Dauer der Verarbeitung: 0.10 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.