355 lines
12 KiB
Python
355 lines
12 KiB
Python
## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
|
|
import os
|
|
import sys
|
|
|
|
from waflib import Options, Logs, Utils, Task
|
|
|
|
def build(bld):
|
|
# bridge dependency is due to global routing
|
|
obj = bld.create_ns3_module('internet', ['bridge', 'traffic-control', 'network', 'core'])
|
|
obj.source = [
|
|
'model/ip-l4-protocol.cc',
|
|
'model/udp-header.cc',
|
|
'model/tcp-header.cc',
|
|
'model/ipv4-interface.cc',
|
|
'model/ipv4-l3-protocol.cc',
|
|
'model/ipv4-end-point.cc',
|
|
'model/udp-l4-protocol.cc',
|
|
'model/tcp-l4-protocol.cc',
|
|
'model/arp-header.cc',
|
|
'model/arp-cache.cc',
|
|
'model/arp-l3-protocol.cc',
|
|
'model/arp-queue-disc-item.cc',
|
|
'model/udp-socket-impl.cc',
|
|
'model/ipv4-end-point-demux.cc',
|
|
'model/udp-socket-factory-impl.cc',
|
|
'model/tcp-socket-factory-impl.cc',
|
|
'model/pending-data.cc',
|
|
'model/rtt-estimator.cc',
|
|
'model/ipv4-raw-socket-factory-impl.cc',
|
|
'model/ipv4-raw-socket-impl.cc',
|
|
'model/icmpv4.cc',
|
|
'model/icmpv4-l4-protocol.cc',
|
|
'model/loopback-net-device.cc',
|
|
'model/ndisc-cache.cc',
|
|
'model/ipv6-interface.cc',
|
|
'model/icmpv6-header.cc',
|
|
'model/ipv6-l3-protocol.cc',
|
|
'model/ipv6-end-point.cc',
|
|
'model/ipv6-end-point-demux.cc',
|
|
'model/ipv6-raw-socket-factory-impl.cc',
|
|
'model/ipv6-raw-socket-impl.cc',
|
|
'model/ipv6-autoconfigured-prefix.cc',
|
|
'model/ipv6-extension.cc',
|
|
'model/ipv6-extension-header.cc',
|
|
'model/ipv6-extension-demux.cc',
|
|
'model/ipv6-option.cc',
|
|
'model/ipv6-option-header.cc',
|
|
'model/ipv6-option-demux.cc',
|
|
'model/icmpv6-l4-protocol.cc',
|
|
'model/tcp-socket-base.cc',
|
|
'model/tcp-socket-state.cc',
|
|
'model/tcp-highspeed.cc',
|
|
'model/tcp-hybla.cc',
|
|
'model/tcp-vegas.cc',
|
|
'model/tcp-congestion-ops.cc',
|
|
'model/tcp-linux-reno.cc',
|
|
'model/tcp-westwood.cc',
|
|
'model/tcp-scalable.cc',
|
|
'model/tcp-veno.cc',
|
|
'model/tcp-bic.cc',
|
|
'model/tcp-cubic.cc',
|
|
'model/tcp-yeah.cc',
|
|
'model/tcp-ledbat.cc',
|
|
'model/tcp-illinois.cc',
|
|
'model/tcp-htcp.cc',
|
|
'model/tcp-lp.cc',
|
|
'model/tcp-dctcp.cc',
|
|
'model/tcp-bbr.cc',
|
|
'model/tcp-rx-buffer.cc',
|
|
'model/tcp-tx-buffer.cc',
|
|
'model/tcp-tx-item.cc',
|
|
'model/tcp-rate-ops.cc',
|
|
'model/tcp-option.cc',
|
|
'model/tcp-option-rfc793.cc',
|
|
'model/tcp-option-winscale.cc',
|
|
'model/tcp-option-ts.cc',
|
|
'model/tcp-option-sack-permitted.cc',
|
|
'model/tcp-option-sack.cc',
|
|
'model/ipv4-packet-info-tag.cc',
|
|
'model/ipv6-packet-info-tag.cc',
|
|
'model/ipv4-interface-address.cc',
|
|
'model/ipv4-address-generator.cc',
|
|
'model/ipv4-header.cc',
|
|
'model/ipv4-queue-disc-item.cc',
|
|
'model/ipv4-packet-filter.cc',
|
|
'model/ipv4-route.cc',
|
|
'model/ipv4-routing-protocol.cc',
|
|
'model/udp-socket.cc',
|
|
'model/udp-socket-factory.cc',
|
|
'model/tcp-socket.cc',
|
|
'model/tcp-socket-factory.cc',
|
|
'model/tcp-recovery-ops.cc',
|
|
'model/tcp-prr-recovery.cc',
|
|
'model/ipv4.cc',
|
|
'model/ipv4-raw-socket-factory.cc',
|
|
'model/ipv6-header.cc',
|
|
'model/ipv6-queue-disc-item.cc',
|
|
'model/ipv6-packet-filter.cc',
|
|
'model/ipv6-interface-address.cc',
|
|
'model/ipv6-route.cc',
|
|
'model/ipv6.cc',
|
|
'model/ipv6-raw-socket-factory.cc',
|
|
'model/ipv6-routing-protocol.cc',
|
|
'model/ipv4-list-routing.cc',
|
|
'model/ipv6-list-routing.cc',
|
|
'helper/ipv4-list-routing-helper.cc',
|
|
'helper/ipv6-list-routing-helper.cc',
|
|
'model/ipv4-static-routing.cc',
|
|
'model/ipv4-routing-table-entry.cc',
|
|
'model/ipv6-static-routing.cc',
|
|
'model/ipv6-routing-table-entry.cc',
|
|
'helper/ipv4-static-routing-helper.cc',
|
|
'helper/ipv6-static-routing-helper.cc',
|
|
'model/global-router-interface.cc',
|
|
'model/global-route-manager.cc',
|
|
'model/global-route-manager-impl.cc',
|
|
'model/candidate-queue.cc',
|
|
'model/ipv4-global-routing.cc',
|
|
'helper/ipv4-global-routing-helper.cc',
|
|
'helper/internet-stack-helper.cc',
|
|
'helper/internet-trace-helper.cc',
|
|
'helper/ipv4-address-helper.cc',
|
|
'helper/ipv4-interface-container.cc',
|
|
'helper/ipv4-routing-helper.cc',
|
|
'helper/ipv6-address-helper.cc',
|
|
'helper/ipv6-interface-container.cc',
|
|
'helper/ipv6-routing-helper.cc',
|
|
'model/ipv6-address-generator.cc',
|
|
'model/ipv4-packet-probe.cc',
|
|
'model/ipv6-packet-probe.cc',
|
|
'model/ipv6-pmtu-cache.cc',
|
|
'model/ripng.cc',
|
|
'model/ripng-header.cc',
|
|
'helper/ripng-helper.cc',
|
|
'model/rip.cc',
|
|
'model/rip-header.cc',
|
|
'helper/rip-helper.cc',
|
|
]
|
|
|
|
internet_test = bld.create_ns3_module_test_library('internet')
|
|
internet_test.source = [
|
|
'test/global-route-manager-impl-test-suite.cc',
|
|
'test/ipv4-address-generator-test-suite.cc',
|
|
'test/ipv4-address-helper-test-suite.cc',
|
|
'test/ipv4-list-routing-test-suite.cc',
|
|
'test/ipv4-packet-info-tag-test-suite.cc',
|
|
'test/ipv4-raw-test.cc',
|
|
'test/ipv4-header-test.cc',
|
|
'test/ipv4-fragmentation-test.cc',
|
|
'test/ipv4-forwarding-test.cc',
|
|
'test/ipv4-test.cc',
|
|
'test/ipv4-static-routing-test-suite.cc',
|
|
'test/ipv4-global-routing-test-suite.cc',
|
|
'test/ipv6-extension-header-test-suite.cc',
|
|
'test/ipv6-list-routing-test-suite.cc',
|
|
'test/ipv6-packet-info-tag-test-suite.cc',
|
|
'test/ipv6-test.cc',
|
|
'test/ipv6-raw-test.cc',
|
|
'test/ipv6-address-duplication-test.cc',
|
|
'test/tcp-test.cc',
|
|
'test/tcp-timestamp-test.cc',
|
|
'test/tcp-sack-permitted-test.cc',
|
|
'test/tcp-wscaling-test.cc',
|
|
'test/tcp-option-test.cc',
|
|
'test/tcp-header-test.cc',
|
|
'test/tcp-ecn-test.cc',
|
|
'test/tcp-general-test.cc',
|
|
'test/tcp-error-model.cc',
|
|
'test/tcp-slow-start-test.cc',
|
|
'test/tcp-cong-avoid-test.cc',
|
|
'test/tcp-fast-retr-test.cc',
|
|
'test/tcp-rto-test.cc',
|
|
'test/tcp-highspeed-test.cc',
|
|
'test/tcp-hybla-test.cc',
|
|
'test/tcp-vegas-test.cc',
|
|
'test/tcp-scalable-test.cc',
|
|
'test/tcp-veno-test.cc',
|
|
'test/tcp-bic-test.cc',
|
|
'test/tcp-yeah-test.cc',
|
|
'test/tcp-illinois-test.cc',
|
|
'test/tcp-htcp-test.cc',
|
|
'test/tcp-lp-test.cc',
|
|
'test/tcp-ledbat-test.cc',
|
|
'test/tcp-zero-window-test.cc',
|
|
'test/tcp-pkts-acked-test.cc',
|
|
'test/tcp-rtt-estimation.cc',
|
|
'test/tcp-bytes-in-flight-test.cc',
|
|
'test/tcp-advertised-window-test.cc',
|
|
'test/tcp-classic-recovery-test.cc',
|
|
'test/tcp-prr-recovery-test.cc',
|
|
'test/tcp-loss-test.cc',
|
|
'test/tcp-linux-reno-test.cc',
|
|
'test/udp-test.cc',
|
|
'test/ipv6-address-generator-test-suite.cc',
|
|
'test/ipv6-dual-stack-test-suite.cc',
|
|
'test/ipv6-fragmentation-test.cc',
|
|
'test/ipv6-forwarding-test.cc',
|
|
'test/ipv6-ripng-test.cc',
|
|
'test/ipv6-address-helper-test-suite.cc',
|
|
'test/rtt-test.cc',
|
|
'test/tcp-tx-buffer-test.cc',
|
|
'test/tcp-rx-buffer-test.cc',
|
|
'test/tcp-endpoint-bug2211.cc',
|
|
'test/tcp-datasentcb-test.cc',
|
|
'test/tcp-rate-ops-test.cc',
|
|
'test/ipv4-rip-test.cc',
|
|
'test/tcp-close-test.cc',
|
|
'test/icmp-test.cc',
|
|
'test/ipv4-deduplication-test.cc',
|
|
'test/tcp-dctcp-test.cc',
|
|
'test/tcp-syn-connection-failed-test.cc',
|
|
'test/tcp-pacing-test.cc',
|
|
'test/tcp-bbr-test.cc',
|
|
]
|
|
# Tests encapsulating example programs should be listed here
|
|
if (bld.env['ENABLE_EXAMPLES']):
|
|
internet_test.source.extend([
|
|
# 'test/internet-examples-test-suite.cc',
|
|
])
|
|
|
|
privateheaders = bld(features='ns3privateheader')
|
|
privateheaders.module = 'internet'
|
|
privateheaders.source = [
|
|
]
|
|
headers = bld(features='ns3header')
|
|
headers.module = 'internet'
|
|
headers.source = [
|
|
'model/udp-header.h',
|
|
'model/tcp-header.h',
|
|
'model/tcp-option.h',
|
|
'model/tcp-option-winscale.h',
|
|
'model/tcp-option-ts.h',
|
|
'model/tcp-option-sack-permitted.h',
|
|
'model/tcp-option-sack.h',
|
|
'model/tcp-option-rfc793.h',
|
|
'model/icmpv4.h',
|
|
'model/icmpv6-header.h',
|
|
# used by routing
|
|
'model/ipv4-interface.h',
|
|
'model/ipv4-l3-protocol.h',
|
|
'model/ipv4-end-point.h',
|
|
'model/ipv4-end-point-demux.h',
|
|
'model/ipv6-l3-protocol.h',
|
|
'model/ipv6-extension.h',
|
|
'model/ipv6-extension-demux.h',
|
|
'model/ipv6-extension-header.h',
|
|
'model/ipv6-option.h',
|
|
'model/ipv6-option-header.h',
|
|
'model/ipv6-end-point.h',
|
|
'model/ipv6-end-point-demux.h',
|
|
'model/arp-l3-protocol.h',
|
|
'model/udp-l4-protocol.h',
|
|
'model/tcp-l4-protocol.h',
|
|
'model/icmpv4-l4-protocol.h',
|
|
'model/ip-l4-protocol.h',
|
|
'model/arp-header.h',
|
|
'model/arp-cache.h',
|
|
'model/arp-queue-disc-item.h',
|
|
'model/icmpv6-l4-protocol.h',
|
|
'model/ipv6-interface.h',
|
|
'model/ndisc-cache.h',
|
|
'model/loopback-net-device.h',
|
|
'model/ipv4-packet-info-tag.h',
|
|
'model/ipv6-packet-info-tag.h',
|
|
'model/ipv4-interface-address.h',
|
|
'model/ipv4-address-generator.h',
|
|
'model/ipv4-header.h',
|
|
'model/ipv4-queue-disc-item.h',
|
|
'model/ipv4-packet-filter.h',
|
|
'model/ipv4-route.h',
|
|
'model/ipv4-routing-protocol.h',
|
|
'model/udp-socket.h',
|
|
'model/udp-socket-factory.h',
|
|
'model/tcp-socket.h',
|
|
'model/tcp-socket-factory.h',
|
|
'model/ipv4.h',
|
|
'model/ipv4-raw-socket-factory.h',
|
|
'model/ipv4-raw-socket-impl.h',
|
|
'model/ipv6-header.h',
|
|
'model/ipv6-queue-disc-item.h',
|
|
'model/ipv6-packet-filter.h',
|
|
'model/ipv6-interface-address.h',
|
|
'model/ipv6-route.h',
|
|
'model/ipv6.h',
|
|
'model/ipv6-raw-socket-factory.h',
|
|
'model/ipv6-routing-protocol.h',
|
|
'model/ipv4-list-routing.h',
|
|
'model/ipv6-list-routing.h',
|
|
'helper/ipv4-list-routing-helper.h',
|
|
'helper/ipv6-list-routing-helper.h',
|
|
'model/ipv4-static-routing.h',
|
|
'model/ipv4-routing-table-entry.h',
|
|
'model/ipv6-static-routing.h',
|
|
'model/ipv6-routing-table-entry.h',
|
|
'helper/ipv4-static-routing-helper.h',
|
|
'helper/ipv6-static-routing-helper.h',
|
|
'model/global-router-interface.h',
|
|
'model/global-route-manager.h',
|
|
'model/global-route-manager-impl.h',
|
|
'model/candidate-queue.h',
|
|
'model/ipv4-global-routing.h',
|
|
'helper/ipv4-global-routing-helper.h',
|
|
'helper/internet-stack-helper.h',
|
|
'helper/internet-trace-helper.h',
|
|
'helper/ipv4-address-helper.h',
|
|
'helper/ipv4-interface-container.h',
|
|
'helper/ipv4-routing-helper.h',
|
|
'helper/ipv6-address-helper.h',
|
|
'helper/ipv6-interface-container.h',
|
|
'helper/ipv6-routing-helper.h',
|
|
'model/ipv6-address-generator.h',
|
|
'model/tcp-highspeed.h',
|
|
'model/tcp-hybla.h',
|
|
'model/tcp-vegas.h',
|
|
'model/tcp-congestion-ops.h',
|
|
'model/tcp-linux-reno.h',
|
|
'model/tcp-westwood.h',
|
|
'model/tcp-scalable.h',
|
|
'model/tcp-veno.h',
|
|
'model/tcp-bic.h',
|
|
'model/tcp-cubic.h',
|
|
'model/tcp-yeah.h',
|
|
'model/tcp-illinois.h',
|
|
'model/tcp-htcp.h',
|
|
'model/tcp-lp.h',
|
|
'model/tcp-dctcp.h',
|
|
'model/windowed-filter.h',
|
|
'model/tcp-bbr.h',
|
|
'model/tcp-ledbat.h',
|
|
'model/tcp-socket-base.h',
|
|
'model/tcp-socket-state.h',
|
|
'model/tcp-tx-buffer.h',
|
|
'model/tcp-tx-item.h',
|
|
'model/tcp-rate-ops.h',
|
|
'model/tcp-rx-buffer.h',
|
|
'model/tcp-recovery-ops.h',
|
|
'model/tcp-prr-recovery.h',
|
|
'model/rtt-estimator.h',
|
|
'model/ipv4-packet-probe.h',
|
|
'model/ipv6-packet-probe.h',
|
|
'model/ipv6-pmtu-cache.h',
|
|
'model/ripng.h',
|
|
'model/ripng-header.h',
|
|
'helper/ripng-helper.h',
|
|
'model/rip.h',
|
|
'model/rip-header.h',
|
|
'helper/rip-helper.h',
|
|
]
|
|
|
|
if (bld.env['ENABLE_EXAMPLES']):
|
|
bld.recurse('examples')
|
|
|
|
bld.ns3_python_bindings()
|
|
|