diff -Nru ifupdown-0.8.13ubuntu3~smppa0/debian/changelog ifupdown-0.8.13ubuntu3~smppa1/debian/changelog --- ifupdown-0.8.13ubuntu3~smppa0/debian/changelog 2016-10-12 20:22:20.000000000 +0000 +++ ifupdown-0.8.13ubuntu3~smppa1/debian/changelog 2016-10-12 20:22:20.000000000 +0000 @@ -1,6 +1,6 @@ -ifupdown (0.8.13ubuntu3~smppa0) yakkety; urgency=medium +ifupdown (0.8.13ubuntu3~smppa1) yakkety; urgency=medium - * do not run ifdown -a when on iscsi root filesystem. (LP: #1629972) + * networking.service: exclude loopback device lo in ExecStop (LP: #1629972) -- Scott Moser Wed, 12 Oct 2016 16:22:20 -0400 diff -Nru ifupdown-0.8.13ubuntu3~smppa0/debian/networking.service ifupdown-0.8.13ubuntu3~smppa1/debian/networking.service --- ifupdown-0.8.13ubuntu3~smppa0/debian/networking.service 2016-10-12 20:13:35.000000000 +0000 +++ ifupdown-0.8.13ubuntu3~smppa1/debian/networking.service 2016-10-12 20:22:20.000000000 +0000 @@ -16,7 +16,6 @@ EnvironmentFile=-/etc/default/networking ExecStartPre=-/bin/sh -c '[ "$CONFIGURE_INTERFACES" != "no" ] && [ -n "$(ifquery --read-environment --list --exclude=lo)" ] && udevadm settle' ExecStart=/sbin/ifup -a --read-environment -ExecStop=/bin/sh -c 'for f in "$@"; do [ -e "$f" ] || continue; echo "$f existed."; exit 1; done; exit 0' -- /run/initramfs/open-iscsi.interface /run/network/network-root-fs -ExecStop=/sbin/ifdown -a --read-environment +ExecStop=/sbin/ifdown -a --read-environment --exclude=lo RemainAfterExit=true TimeoutStartSec=5min diff -Nru ifupdown-0.8.13ubuntu3~smppa0/go.sh ifupdown-0.8.13ubuntu3~smppa1/go.sh --- ifupdown-0.8.13ubuntu3~smppa0/go.sh 1970-01-01 00:00:00.000000000 +0000 +++ ifupdown-0.8.13ubuntu3~smppa1/go.sh 2016-10-12 20:22:20.000000000 +0000 @@ -0,0 +1,40 @@ +#!/bin/sh +sh -c ' + need() { local n=""; for n in "$@"; do "$n" --help /dev/null 2>&1; done; } + show() { + local n=$1 h=$2 line="" + echo "==== $n ====" + { + ping6 -c 2 -w 2 "$REMOTE_HOST" + ip addr show up + ip -6 route + cat /etc/resolv.conf + } > "$n" + cat "$n" + } + + cd /run + need sleep cat ip ping6 rm df grep sed ifdown + chmod -v -x /etc/network/*down*.d/* + : > /etc/network/interfaces + echo "lo=lo" > /run/network/ifstate + rm -v -f /etc/network/ifstate.eth* + + REMOTE_HOST=$(df | grep dev.disk | sed -e "s,.*ip-,," -e "s,:3260.*,,") + echo REMOTE_HOST=$REMOTE_HOST + + show before + echo ==== going down ==== + ifdown -vvv -a + ret=$? + echo ==== down $ret ==== + + from=before + for n in 0 1 2 3 4 5; do + name="after$n"; + show "$name"; + echo "=== diff $from -> $name ===" + diff -u $from $name; from=$name; + sleep .5; + done +' diff -Nru ifupdown-0.8.13ubuntu3~smppa0/tags ifupdown-0.8.13ubuntu3~smppa1/tags --- ifupdown-0.8.13ubuntu3~smppa0/tags 1970-01-01 00:00:00.000000000 +0000 +++ ifupdown-0.8.13ubuntu3~smppa1/tags 2016-10-12 20:22:20.000000000 +0000 @@ -0,0 +1,249 @@ +!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/ +!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/ +!_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert@users.sourceforge.net/ +!_TAG_PROGRAM_NAME Exuberant Ctags // +!_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/ +!_TAG_PROGRAM_VERSION 5.9~svn20110310 // +-name debian/rules /^ dh_installinit --name=ifup@ --noscripts$/;" m +-name debian/rules /^ dh_installinit --name=network-interface --noscripts$/;" m +-name debian/rules /^ dh_installinit --name=network-interface-container --noscripts$/;" m +-name debian/rules /^ dh_installinit --name=network-interface-security --noscripts$/;" m +-name debian/rules /^ dh_installinit --name=networking --noscripts$/;" m +ARCH Makefile /^ARCH := $(shell dpkg-architecture -qDEB_HOST_ARCH_OS)$/;" m +ARCH Makefile /^ARCH ?= linux$/;" m +ARCH debian/rules /^export ARCH := $(shell dpkg-architecture -qDEB_HOST_ARCH_OS)$/;" m +BASEDIR Makefile /^BASEDIR ?= $(DESTDIR)$/;" m +CC debian/rules /^export CC := $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)-gcc$/;" m +CFLAGS Makefile /^CFLAGS ?= -Wall -W -Wno-unused-parameter -g -O2$/;" m +CFLAGS debian/rules /^export CFLAGS := -Wall -W -Wno-unused-parameter $(shell dpkg-buildflags --get CFLAGS) $(shell dpkg-buildflags --get CPPFLAGS) -D'IFUPDOWN_VERSION="$(VERSION)"'$/;" m +DEFNFILES Makefile /^DEFNFILES := inet.defn ipx.defn inet6.defn can.defn$/;" m +DESTDIR debian/rules /^export DESTDIR := debian\/$(shell dh_listpackages)$/;" m +EUNBALBRACK header.h 94;" d +EUNBALPER header.h 97;" d +EUNDEFVAR header.h 95;" d +HEADER_H header.h 2;" d +INHERITS config.c /^ INHERITS$/;" e enum:keyword file: +LDFLAGS debian/rules /^export LDFLAGS := $(shell dpkg-buildflags --get LDFLAGS)$/;" m +LO_IFACE header.h 103;" d +MAN Makefile /^MAN := $(patsubst %.defn,%.man,$(DEFNFILES))$/;" m +MAX_OPT_DEPTH header.h 93;" d +MAX_VARNAME header.h 96;" d +NIL config.c /^ NIL = -1,$/;" e enum:keyword file: +OBJ Makefile /^OBJ := main.o addrfam.o execute.o config.o \\$/;" m +RUN_DIR header.h 99;" d +VERSION Makefile /^VERSION ?= 0.7$/;" m +VERSION debian/rules /^export VERSION := $(shell dpkg-parsechangelog|grep Version|cut -d' ' -f2|sed s\/.*really\/\/g)$/;" m +_iface_has archcommon.c /^bool _iface_has(const char *iface, const char *delims) {$/;" f +add_allow_up config.c /^static allowup_defn *add_allow_up(const char *filename, int line, allowup_defn *allow_up, const char *iface_name) {$/;" f file: +add_to_list config.c /^static void add_to_list(char ***list, int *count, const char *item) {$/;" f file: +addr_fams addrfam.c /^address_family *addr_fams[] = {$/;" v +address_family header.h /^ address_family *address_family;$/;" m struct:interface_defn +address_family header.h /^struct address_family {$/;" s +address_family header.h /^typedef struct address_family address_family;$/;" t typeref:struct:address_family +addstr execute.c /^static void addstr(char **buf, size_t *len, size_t *pos, const char *str, size_t strlen) {$/;" f file: +allow_class main.c /^static char *allow_class = NULL;$/;" v file: +allowup_defn header.h /^struct allowup_defn {$/;" s +allowup_defn header.h /^typedef struct allowup_defn allowup_defn;$/;" t typeref:struct:allowup_defn +allowups header.h /^ allowup_defn *allowups;$/;" m struct:interfaces_file +already_seen config.c /^static bool already_seen(const char *filename) {$/;" f file: +argc header.h /^ int argc;$/;" m struct:conversion +argv header.h /^ char **argv;$/;" m struct:conversion +argv0 main.c /^const char *argv0;$/;" v +check execute.c /^static int check(const char *str) {$/;" f file: +check_program debian/ifupdown-hotplug /^check_program() {$/;" f +check_stdio main.c /^static void check_stdio(void) {$/;" f file: +cleanup_hwaddress archcommon.c /^void cleanup_hwaddress(interface_defn *ifd, char **pparam, int argc, char **argv) {$/;" f +clear_seen config.c /^static void clear_seen(void) {$/;" f file: +cmds main.c /^static cmds_t cmds = NULL;$/;" v file: +cmds_t main.c /^typedef int (*cmds_t)(interface_defn *);$/;" t file: +command_set header.h /^typedef int (command_set) (interface_defn *ifd, execfn *e);$/;" t +compute_v4_addr archcommon.c /^void compute_v4_addr(interface_defn *ifd, char **pparam, int argc, char **argv) {$/;" f +compute_v4_broadcast archcommon.c /^void compute_v4_broadcast(interface_defn *ifd, char **pparam, int argc, char **argv) {$/;" f +compute_v4_mask archcommon.c /^void compute_v4_mask(interface_defn *ifd, char **pparam, int argc, char **argv) {$/;" f +conversion header.h /^struct conversion {$/;" s +conversion header.h /^typedef struct conversion conversion;$/;" t typeref:struct:conversion +conversions header.h /^ conversion *conversions;$/;" m struct:method +convert_variables config.c /^void convert_variables(conversion *conversions, interface_defn *ifd) {$/;" f +copy_variables config.c /^static interface_defn *copy_variables(interface_defn *destif, interface_defn *srcif) {$/;" f file: +defaults header.h /^ option_default *defaults;$/;" m struct:method +defn main.c /^interfaces_file *defn;$/;" v +determine_command main.c /^static cmds_t determine_command(void) {$/;" f file: +directory_filter config.c /^static int directory_filter(const struct dirent *d) {$/;" f file: +do_all main.c /^bool do_all = false;$/;" v +do_everything debian/ifupdown-hotplug /^do_everything() {$/;" f +do_interface main.c /^static bool do_interface(const char *target_iface) {$/;" f file: +do_post_all main.c /^static void do_post_all(void) {$/;" f file: +do_pre_all main.c /^static void do_pre_all(void) {$/;" f file: +do_state main.c /^static int do_state(int n_target_ifaces, char *target_iface[]) {$/;" f file: +doit execute.c /^int doit(const char *str) {$/;" f +down header.h /^ command_set *up, *down;$/;" m struct:method +excludeint main.c /^static char **excludeint = NULL;$/;" v file: +excludeints main.c /^static int excludeints = 0;$/;" v file: +execable archcommon.c /^bool execable(const char *program) {$/;" f +execfn header.h /^typedef int (execfn) (const char *command);$/;" t +execute execute.c /^int execute(const char *command, interface_defn *ifd, execfn *exec) {$/;" f +execute_options execute.c /^static int execute_options(interface_defn *ifd, execfn *exec, char *opt) {$/;" f file: +execute_scripts execute.c /^static int execute_scripts(interface_defn *ifd, execfn *exec, char *opt) {$/;" f file: +filename config.c /^ char *filename;$/;" m struct:seen_file file: +find_allowup config.c /^allowup_defn *find_allowup(interfaces_file *defn, const char *name) {$/;" f +fn header.h /^ void (*fn) (interface_defn *, char **, int, char **);$/;" m struct:conversion +force main.c /^static bool force = false;$/;" v file: +get_address_family config.c /^static address_family *get_address_family(address_family *af[], const char *name) {$/;" f file: +get_address_family defn2c.pl /^sub get_address_family {$/;" s +get_address_family defn2man.pl /^sub get_address_family {$/;" s +get_allowup config.c /^static allowup_defn *get_allowup(allowup_defn **allowups, const char *name) {$/;" f file: +get_architecture defn2c.pl /^sub get_architecture {$/;" s +get_architecture defn2man.pl /^sub get_architecture {$/;" s +get_commands defn2c.pl /^sub get_commands {$/;" s +get_description defn2man.pl /^sub get_description {$/;" s +get_interface config.c /^static interface_defn *get_interface(interfaces_file *defn, const char *iface, const char *addr_fam) {$/;" f file: +get_keyword config.c /^static keyword get_keyword(const char *word) {$/;" f file: +get_line config.c /^static int get_line(char **result, size_t *result_len, FILE *f, int *line) {$/;" f file: +get_method config.c /^static method *get_method(address_family *af, const char *name) {$/;" f file: +get_method defn2c.pl /^sub get_method {$/;" s +get_method defn2man.pl /^sub get_method {$/;" s +get_options defn2c.pl /^sub get_options {$/;" s +get_options defn2man.pl /^sub get_options {$/;" s +get_token archcommon.c /^void get_token(interface_defn *ifd, char **pparam, int argc, char **argv) {$/;" f +get_var execute.c /^char *get_var(const char *id, size_t idlen, interface_defn *ifd) {$/;" f +help main.c /^static void help(int (*cmds) (interface_defn *)) {$/;" f file: +if_set archcommon.c /^void if_set(interface_defn *ifd, char **pparam, int argc, char **argv) {$/;" f +iface_down execute.c /^int iface_down(interface_defn *iface) {$/;" f +iface_has archcommon.h 6;" d +iface_is_link archcommon.h 5;" d +iface_is_lo archcommon.h 7;" d +iface_list execute.c /^int iface_list(interface_defn *iface) {$/;" f +iface_postdown execute.c /^int iface_postdown(interface_defn *iface) {$/;" f +iface_postup execute.c /^int iface_postup(interface_defn *iface) {$/;" f +iface_predown execute.c /^int iface_predown(interface_defn *iface) {$/;" f +iface_preup execute.c /^int iface_preup(interface_defn *iface) {$/;" f +iface_query execute.c /^int iface_query(interface_defn *iface) {$/;" f +iface_up execute.c /^int iface_up(interface_defn *iface) {$/;" f +ifaces header.h /^ interface_defn *ifaces;$/;" m struct:interfaces_file +ignore_failures main.c /^bool ignore_failures = false;$/;" v +ignore_interface main.c /^static bool ignore_interface(const char *iface) {$/;" f file: +interface_defn header.h /^struct interface_defn {$/;" s +interface_defn header.h /^typedef struct interface_defn interface_defn;$/;" t typeref:struct:interface_defn +interfaces header.h /^ char **interfaces;$/;" m struct:allowup_defn +interfaces main.c /^static char *interfaces = "\/etc\/network\/interfaces";$/;" v file: +interfaces_file header.h /^struct interfaces_file {$/;" s +interfaces_file header.h /^typedef struct interfaces_file interfaces_file;$/;" t typeref:struct:interfaces_file +is_locked main.c /^static bool is_locked(const char *iface) {$/;" f file: +keyword config.c /^enum keyword {$/;" g file: +keyword config.c /^typedef enum keyword keyword;$/;" t typeref:enum:keyword file: +keywords config.c /^static const char *keywords[] = {$/;" v file: +list main.c /^static bool list = false;$/;" v file: +localenv execute.c /^static char **localenv = NULL;$/;" v file: +lock_fd main.c /^static int lock_fd(int fd) {$/;" f file: +lock_interface main.c /^static FILE *lock_interface(const char *iface, char **state) {$/;" f file: +lock_state main.c /^static FILE *lock_state() {$/;" f file: +lockfile main.c /^static char lockfile[] = RUN_DIR ".ifstate.lock";$/;" v file: +logical_iface header.h /^ char *logical_iface;$/;" m struct:interface_defn +main main.c /^int main(int argc, char *argv[]) {$/;" f +make_hex_address archcommon.c /^void make_hex_address(interface_defn *ifd, char **pparam, int argc, char **argv) {$/;" f +make_pidfile_name main.c /^bool make_pidfile_name(char *name, size_t size, const char *command, interface_defn * ifd) {$/;" f +map_value archcommon.c /^void map_value(interface_defn *ifd, char **pparam, int argc, char **argv) {$/;" f +mapping header.h /^ char **mapping;$/;" m struct:mapping_defn +mapping_defn header.h /^struct mapping_defn {$/;" s +mapping_defn header.h /^typedef struct mapping_defn mapping_defn;$/;" t typeref:struct:mapping_defn +mappings header.h /^ mapping_defn *mappings;$/;" m struct:interfaces_file +match defn2c.pl /^sub match {$/;" s +match defn2man.pl /^sub match {$/;" s +match header.h /^ char **match;$/;" m struct:mapping_defn +match_patterns main.c /^bool match_patterns(const char *string, int argc, char *argv[]) {$/;" f +max_interfaces header.h /^ int max_interfaces;$/;" m struct:allowup_defn +max_mappings header.h /^ int max_mappings;$/;" m struct:mapping_defn +max_matches header.h /^ int max_matches;$/;" m struct:mapping_defn +max_options header.h /^ int max_options;$/;" m struct:interface_defn +max_options main.c /^static int max_options = 0;$/;" v file: +mesg debian/ifupdown-hotplug /^ mesg() {$/;" f +meta_iface main.c /^static interface_defn meta_iface = {$/;" v file: +method header.h /^ method *method;$/;" m struct:address_family +method header.h /^ method *method;$/;" m struct:interface_defn +method header.h /^struct method {$/;" s +method header.h /^typedef struct method method;$/;" t typeref:struct:method +mylinux archlinux.c /^unsigned int mylinux(int maj, int rev, int min) {$/;" f +mylinuxver archlinux.c /^unsigned int mylinuxver(void) {$/;" f +n_interfaces header.h /^ int n_interfaces;$/;" m struct:allowup_defn +n_mappings header.h /^ int n_mappings;$/;" m struct:mapping_defn +n_matches header.h /^ int n_matches;$/;" m struct:mapping_defn +n_methods header.h /^ int n_methods;$/;" m struct:address_family +n_options header.h /^ int n_options;$/;" m struct:interface_defn +n_options main.c /^static int n_options = 0;$/;" v file: +n_target_ifaces main.c /^static int n_target_ifaces;$/;" v file: +name header.h /^ char *name;$/;" m struct:address_family +name header.h /^ char *name;$/;" m struct:method +name header.h /^ char *name;$/;" m struct:variable +net_ifdown debian/ifupdown-hotplug /^net_ifdown() {$/;" f +net_ifup debian/ifupdown-hotplug /^net_ifup() {$/;" f +newoption header.h /^ char *newoption;$/;" m struct:conversion +next config.c /^ struct seen_file *next;$/;" m struct:seen_file typeref:struct:seen_file::seen_file file: +next header.h /^ allowup_defn *next;$/;" m struct:allowup_defn +next header.h /^ interface_defn *next;$/;" m struct:interface_defn +next header.h /^ mapping_defn *next;$/;" m struct:mapping_defn +next_word config.c /^static char *next_word(char *buf, char *word, int maxlen) {$/;" f file: +nextline defn2c.pl /^sub nextline {$/;" s +nextline defn2man.pl /^sub nextline {$/;" s +no_act main.c /^bool no_act = false;$/;" v +no_auto_down_int main.c /^char **no_auto_down_int = NULL;$/;" v +no_auto_down_ints main.c /^int no_auto_down_ints = 0;$/;" v +no_loopback main.c /^bool no_loopback = false;$/;" v +no_scripts_int main.c /^char **no_scripts_int = NULL;$/;" v +no_scripts_ints main.c /^int no_scripts_ints = 0;$/;" v +option header.h /^ char *option;$/;" m struct:conversion +option header.h /^ char *option;$/;" m struct:option_default +option header.h /^ variable *option;$/;" m struct:interface_defn +option main.c /^static variable *option = NULL;$/;" v file: +option_default header.h /^struct option_default {$/;" s +option_default header.h /^typedef struct option_default option_default;$/;" t typeref:struct:option_default +our_arch defn2c.pl /^sub our_arch {$/;" s +our_arch defn2man.pl /^sub our_arch {$/;" s +parse execute.c /^static char *parse(const char *command, interface_defn *ifd) {$/;" f file: +parse_environment_variables main.c /^static void parse_environment_variables(void) {$/;" f file: +parse_options main.c /^static void parse_options(int *argc, char **argv[]) {$/;" f file: +pcmcia_shared examples/pcmcia-compat.sh /^pcmcia_shared () {$/;" f +popen2 execute.c /^static int popen2(FILE **in, FILE **out, char *command, ...) {$/;" f file: +quote_chars defn2c.pl /^sub quote_chars {$/;" s +read_all_state main.c /^static void read_all_state(char ***ifaces, int *n_ifaces) {$/;" f file: +read_interfaces config.c /^interfaces_file *read_interfaces(const char *filename) {$/;" f +read_interfaces_defn config.c /^static interfaces_file *read_interfaces_defn(interfaces_file *defn, const char *filename) {$/;" f file: +real_iface header.h /^ char *real_iface;$/;" m struct:interface_defn +run_mapping execute.c /^bool run_mapping(const char *physical, char *logical, int len, mapping_defn *map) {$/;" f +run_mappings main.c /^static bool run_mappings = true;$/;" v file: +run_scripts main.c /^bool run_scripts = true;$/;" v +sanitize_file_name main.c /^static void sanitize_file_name(char *name) {$/;" f file: +script header.h /^ char *script;$/;" m struct:mapping_defn +seen_file config.c /^struct seen_file {$/;" s file: +seen_files config.c /^} *seen_files = NULL;$/;" v typeref:struct:seen_file +select_interfaces main.c /^static void select_interfaces(int argc, char *argv[]) {$/;" f file: +set_environ execute.c /^static void set_environ(interface_defn *iface, char *mode, char *phase) {$/;" f file: +set_preferred_lft archcommon.c /^void set_preferred_lft(interface_defn *ifd, char **pparam, int argc, char **argv) {$/;" f +set_variable config.c /^variable *set_variable(const char *name, const char *value, variable **var, int *n_vars, int *max_vars) {$/;" f +setlocalenv execute.c /^static char *setlocalenv(char *format, char *name, char *value) {$/;" f file: +setlocalenv_nomangle execute.c /^static char *setlocalenv_nomangle(char *format, char *name, char *value) {$/;" f file: +skip_section defn2c.pl /^sub skip_section {$/;" s +skip_section defn2man.pl /^sub skip_section {$/;" s +state_query main.c /^static bool state_query = false;$/;" v file: +statefile main.c /^static char statefile[] = RUN_DIR "ifstate";$/;" v file: +strip main.c /^static char *strip(char *buf) {$/;" f file: +strlmatch header.h 125;" d +strncmpz execute.c /^int strncmpz(const char *l, const char *r, size_t llen) {$/;" f +target_iface main.c /^static char **target_iface;$/;" v file: +tmpstatefile main.c /^static char tmpstatefile[] = RUN_DIR ".ifstate.tmp";$/;" v file: +to_decimal archcommon.c /^void to_decimal(interface_defn *ifd, char **pparam, int argc, char **argv) {$/;" f +up header.h /^ command_set *up, *down;$/;" m struct:method +update_state main.c /^static void update_state(const char *iface, const char *state, FILE *lock_fp) {$/;" f file: +usage examples/pcmcia-compat.sh /^usage () {$/;" f +usage main.c /^static void usage() {$/;" f file: +usenet2man defn2man.pl /^sub usenet2man {$/;" s +value header.h /^ char *value;$/;" m struct:option_default +value header.h /^ char *value;$/;" m struct:variable +var_set execute.c /^bool var_set(const char *id, interface_defn *ifd) {$/;" f +var_set_anywhere execute.c /^bool var_set_anywhere(const char *id, interface_defn *ifd) {$/;" f +var_true execute.c /^bool var_true(const char *id, interface_defn *ifd) {$/;" f +variable header.h /^struct variable {$/;" s +variable header.h /^typedef struct variable variable;$/;" t typeref:struct:variable +verbose main.c /^bool verbose = false;$/;" v +version main.c /^static void version() {$/;" f file: +wait_for_interface debian/ifupdown-hotplug /^wait_for_interface() {$/;" f +when header.h /^ char *when;$/;" m struct:allowup_defn