def show_link(self):
        '''show link information'''
        for master in self.mpstate.mav_master:
            linkdelay = (self.status.highest_msec - master.highest_msec)*1.0e-3
            if master.linkerror:
                status = "DOWN"
            else:
                status = "OK"
            sign_string = ''
            try:
                if master.mav.signing.sig_count:
                    if master.mav.signing.secret_key is None:
                        # unsigned/reject counts are not updated if we
                        # don't have a signing secret
                        sign_string = ", (no-signing-secret)"
                    else:
                        sign_string = ", unsigned %u reject %u" % (master.mav.signing.unsigned_count, master.mav.signing.reject_count)
            except AttributeError as e:
                # some mav objects may not have a "signing" attribute
                pass
            print("link %s %s (%u packets, %.2fs delay, %u lost, %.1f%% loss%s)" % (self.link_label(master),
                                                                                    status,
                                                                                    self.status.counters['MasterIn'][master.linknum],
                                                                                    linkdelay,
                                                                                    master.mav_loss,
                                                                                    master.packet_loss(),
                                                                                    sign_string))