/mandos/release

To get this branch, use:
bzr branch http://bzr.recompile.se/loggerhead/mandos/release

« back to all changes in this revision

Viewing changes to plugins.d/mandos-client.c

* mandos: Tolerate restarting Avahi servers.  Also Changed to new
          "except x as y" exception syntax.
  (AvahiService.entry_group_state_changed_match): New; contains the
                                                  SignalMatch object.
  (AvahiService.remove): Really remove the group and the signal
                         connection, if any.
  (AvahiService.add): Always create a new group and signal connection.
  (AvahiService.cleanup): Changed to simply call remove().
  (AvahiService.server_state_changed): Handle and log more bad states.
  (AvahiService.activate): Set "follow_name_owner_changes=True" on the
                           Avahi Server proxy object.
  (ClientDBus.checked_ok): Do not return anything.
  (ClientDBus.CheckedOK): Do not return anything, as documented.
* mandos-monitor: Call D-Bus methods asynchronously.

Show diffs side-by-side

added added

removed removed

Lines of Context:
9
9
 * "browse_callback", and parts of "main".
10
10
 * 
11
11
 * Everything else is
12
 
 * Copyright © 2008-2010 Teddy Hogeborn
13
 
 * Copyright © 2008-2010 Björn Påhlsson
 
12
 * Copyright © 2008-2011 Teddy Hogeborn
 
13
 * Copyright © 2008-2011 Björn Påhlsson
14
14
 * 
15
15
 * This program is free software: you can redistribute it and/or
16
16
 * modify it under the terms of the GNU General Public License as
1032
1032
int good_interface(const struct dirent *if_entry){
1033
1033
  ssize_t ssret;
1034
1034
  char *flagname = NULL;
 
1035
  if(if_entry->d_name[0] == '.'){
 
1036
    return 0;
 
1037
  }
1035
1038
  int ret = asprintf(&flagname, "%s/%s/flags", sys_class_net,
1036
1039
                     if_entry->d_name);
1037
1040
  if(ret < 0){
1038
1041
    perror("asprintf");
1039
1042
    return 0;
1040
1043
  }
1041
 
  if(if_entry->d_name[0] == '.'){
1042
 
    return 0;
1043
 
  }
1044
1044
  int flags_fd = (int)TEMP_FAILURE_RETRY(open(flagname, O_RDONLY));
1045
1045
  if(flags_fd == -1){
1046
1046
    perror("open");
 
1047
    free(flagname);
1047
1048
    return 0;
1048
1049
  }
 
1050
  free(flagname);
1049
1051
  typedef short ifreq_flags;    /* ifreq.ifr_flags in netdevice(7) */
1050
1052
  /* read line from flags_fd */
1051
1053
  ssize_t to_read = (sizeof(ifreq_flags)*2)+3; /* "0x1003\n" */
1111
1113
    }
1112
1114
    return 0;
1113
1115
  }
 
1116
  /* Reject non-ARP interfaces (including dummy interfaces) */
 
1117
  if(flags & IFF_NOARP){
 
1118
    if(debug){
 
1119
      fprintf(stderr, "Rejecting non-ARP interface \"%s\"\n",
 
1120
              if_entry->d_name);
 
1121
    }
 
1122
    return 0;
 
1123
  }
1114
1124
  /* Accept this device */
1115
1125
  if(debug){
1116
1126
    fprintf(stderr, "Interface \"%s\" is acceptable\n",