add time constraints and other checks on PC9x timestamp
authorDirk Koopman <djk@tobit.co.uk>
Fri, 16 Nov 2007 17:15:11 +0000 (17:15 +0000)
committerDirk Koopman <djk@tobit.co.uk>
Fri, 16 Nov 2007 17:15:11 +0000 (17:15 +0000)
This involves making sure that the timestamp is within 15 mins of "now"
to be accepted. This has other rollover effects in that I don't send an
"old" C record on startup anymore, just send an A record followed by a K.
These days a newly minted C record will be along in 15mins or so anyway.

Made sh/newc terminal width aware.

Added CTY-1709 cty.dat data.

Changes
cmd/show/newconfiguration.pl
data/cty.dat
data/prefix_data.pl
perl/DXProt.pm
perl/DXProtHandle.pm
perl/Route.pm
perl/Version.pm

diff --git a/Changes b/Changes
index e779721a69604b8350de73e7a2c4451d52d6057f..6a0731b6b84fa110302909df620653bcce2d641f 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,3 +1,8 @@
+16Nov07=======================================================================
+1. add CTY-1709 prefix changes
+2. added extra checking for the time stamp on PC9x sentences. These must now
+be within 15 minutes (configurable) of this node's time to be accepted.
+3. made show/newc terminal width aware.
 24Oct07=======================================================================
 1. Added CTY-1708 prefix changes
 23Oct07=======================================================================
index 516e448726f897c3c72efe44bedd8cb44e61811d..63414e0641b2d474101ed4287017f905d391912b 100644 (file)
@@ -16,6 +16,6 @@ if (@list && $list[0] =~ /^NOD/) {
        shift @list;
 }
 
-push @out, $main::routeroot->config($nodes_only, 0, {}, @list);
+push @out, $main::routeroot->config($nodes_only, $self->width, 0, {}, @list);
 return (1, @out);
 
index f9dbdf0519899280660cf3157ef38a2985a29f5b..1447d5abc9847d4d173a7f4edfd688d107e60975 100644 (file)
@@ -106,7 +106,7 @@ Sierra Leone:             35:  46:  AF:    8.50:    13.20:     0.0:  9L:
 West Malaysia:            28:  54:  AS:    3.20:  -101.60:    -7.5:  9M2:\r
     9M2,9M4,9M50,9W2,9W4;\r
 East Malaysia:            28:  54:  OC:    5.80:  -118.10:    -7.5:  9M6:\r
-    9M6,9M8,9W6,9W8,9M50MS;\r
+    9M6,9M8,9W6,9W8,9M2/PG5M/6,9M50MS;\r
 Nepal:                    22:  42:  AS:   27.70:   -85.30:   -5.75:  9N:\r
     9N;\r
 Rep. of Congo:            36:  52:  AF:   -4.30:   -15.30:    -1.0:  9Q:\r
@@ -187,11 +187,9 @@ Antarctica:               13:  74:  SA:  -65.00:    64.00:    -4.0:  CE9:
     ANT,AX0,FT0Y(30)[70],FT2Y(30)[70],FT4Y(30)[70],FT5Y(30)[70],FT8Y(30)[70],\r
     LU1Z[73],R1AN,VH0(39)[69],VI0(39)[69],VJ0(39)[69],VK0(39)[69],VL0(39)[69],\r
     VM0(39)[69],VN0(39)[69],VZ0(39)[69],ZL0(30)[71],ZL5(30)[71],ZM5(30)[71],\r
-    ZS7(38)[67],8J1RF(39)[67],8J1RL(39)[67],DP0GVN(38)[67],K2ARB/KC4(30)[71],\r
-    KC4/K2ARB(30)[71],KC4AAA(39),KC4AAC[73],KC4AAF(30)[71],KC4USB(12)[72],\r
-    KC4USV(30)[71],KC4USX(30)[71],LU4ZS[73],R1ANB(29)[73],R1ANC(29)[73],\r
-    R1AND(38)[67],R1ANN(38)[67],R1ANT(29)[69],R1ANZ(29)[73],VP8BF[73],\r
-    VP8DJB[73],VP8DKF(30)[71],VP8PJ[73],VP8ROT[73],W1MRQ/KC4(30)[71];\r
+    ZS7(38)[67],8J1RF(39)[67],8J1RL(39)[67],DP0GVN(38)[67],KC4/K2ARB(30)[71],\r
+    KC4AAA(39),KC4AAC[73],KC4USB(12)[72],KC4USV(30)[71],LU4ZS[73],VP8DJB[73],\r
+    VP8DKF(30)[71],VP8PJ[73],VP8ROT[73];\r
 Cuba:                     08:  11:  NA:   23.10:    82.40:     5.0:  CM:\r
     CL,CM,CO,T4;\r
 Morocco:                  33:  37:  AF:   33.60:     7.50:     0.0:  CN:\r
@@ -225,7 +223,7 @@ Eritrea:                  37:  48:  AF:   15.30:   -38.90:    -3.0:  E3:
 Palestine:                20:  39:  AS:   31.40:   -35.10:    -2.0:  E4:\r
     E4;\r
 North Cook Is.:           32:  62:  OC:  -10.40:   161.00:    10.0:  E5/n:\r
-    E51PDX,E51PEN,E51QMA,E51TUG,E51WL;\r
+    E51WL;\r
 South Cook Is.:           32:  62:  OC:  -21.20:   159.80:    10.0:  E5/s:\r
     E5;\r
 Bosnia-Herzegovina:       15:  28:  EU:   43.50:   -18.30:    -1.0:  E7:\r
@@ -233,7 +231,7 @@ Bosnia-Herzegovina:       15:  28:  EU:   43.50:   -18.30:    -1.0:  E7:
 Spain:                    14:  37:  EU:   40.40:     3.70:    -1.0:  EA:\r
     AM,AN,AO,EA,EB,EC,ED,EE,EF,EG,EH;\r
 Balearic Is.:             14:  37:  EU:   39.50:    -2.60:    -1.0:  EA6:\r
-    AM6,AN6,AO6,EA6,EB6,EC6,ED6,EE6,EF6,EG6,EH6,EA5ON/6;\r
+    AM6,AN6,AO6,EA6,EB6,EC6,ED6,EE6,EF6,EG6,EH6,ED5ON/6;\r
 Canary Is.:               33:  36:  AF:   28.40:    15.30:     0.0:  EA8:\r
     AM8,AN8,AO8,EA8,EB8,EC8,ED8,EE8,EF8,EG8,EH8;\r
 Ceuta and Melilla:        33:  37:  AF:   35.60:     3.00:    -1.0:  EA9:\r
@@ -287,13 +285,13 @@ Marquesas Is.:            31:  63:  OC:   -9.00:   139.50:    10.0:  FO/m:
 St. Pierre & Miquelon:    05:  09:  NA:   46.70:    56.00:     3.0:  FP:\r
     FP;\r
 Reunion:                  39:  53:  AF:  -21.10:   -55.60:    -4.0:  FR:\r
-    FR,TO5R;\r
+    FR;\r
 Glorioso:                 39:  53:  AF:  -11.50:   -47.30:    -4.0:  FR/g:\r
     TO4G;\r
 Juan de Nova & Europa:    39:  53:  AF:  -19.60:   -41.60:    -3.0:  FR/j:\r
-    TO4E,TO4WW;\r
+    TO4E;\r
 Tromelin:                 39:  53:  AF:  -15.90:   -54.40:    -4.0:  FR/t:\r
-    FR5ZQ/T,FR5ZU/T;\r
+    FR5ZU/T;\r
 Crozet:                   39:  68:  AF:  -46.00:   -52.00:    -4.0:  FT5W:\r
     FT0W,FT2W,FT4W,FT5W,FT8W;\r
 Kerguelen:                39:  68:  AF:  -49.30:   -69.20:    -5.0:  FT5X:\r
@@ -337,7 +335,7 @@ Shetland:                 14:  27:  EU:   60.40:     1.50:     0.0:  *GM/s:
     GZ,MZ,2M0ZET,GB2ELH,GM0AVR,GM0CXQ,GM0CYJ,GM0DJI,GM0EKM,GM0ILB,GM0ULK,\r
     GM1ZNR,GM3KLA,GM3WHT,GM3ZET,GM3ZNM,GM4GPP,GM4GQM,GM4IPK,GM4LBE,GM4LER,\r
     GM4SLV,GM4SSA,GM4SWU,GM4WXQ,GM4ZHL,GM7AFE,GM7GWW,GM8LNH,GM8MMA,GM8YEC,\r
-    MM0LSM,MM0XAU,MM0ZAL,MM1FJM,MM3VQO,MM5PSL;\r
+    MM0LSM,MM0XAU,MM0ZAL,MM1FJM,MM3VQO,MM5PSL,MS0ZCG;\r
 Guernsey:                 14:  27:  EU:   49.50:     2.70:     0.0:  GU:\r
     2P,2U,GP,GU,MP,MU,GB0GUC,GB0JAG,GB0ON,GB2ECG,GB2GU,GB50LIB;\r
 Wales:                    14:  27:  EU:   51.50:     3.20:     0.0:  GW:\r
@@ -375,7 +373,7 @@ San Andres/Providencia:   07:  11:  NA:   12.50:    81.70:     5.0:  HK0/a:
 Malpelo I.:               09:  12:  SA:    4.00:    81.10:     5.0:  HK0/m:\r
     5J0M,5K0M,HJ0M,HK0M,HK0TU;\r
 South Korea:              25:  44:  AS:   37.50:  -127.00:    -9.0:  HL:\r
-    6K,6L,6M,6N,D7,D8,D9,DS,DT,HL,KL9K;\r
+    6K,6L,6M,6N,D7,D8,D9,DS,DT,HL;\r
 North Korea:              25:  44:  AS:   39.00:  -126.00:    -9.0:  HM:\r
     HM,P5,P6,P7,P8,P9;\r
 Panama:                   07:  11:  NA:    9.00:    79.50:     5.0:  HP:\r
@@ -393,7 +391,8 @@ Italy:                    15:  28:  EU:   41.90:   -12.50:    -1.0:  I:
 Italy (Africa):           33:  37:  AF:   35.40:   -12.50:    -1.0:  *IG9:\r
     IG9,IH9;\r
 Sardinia:                 15:  28:  EU:   39.20:    -9.10:    -1.0:  IS:\r
-    IM0,IS,IW0U,IW0V,IW0W,IW0X,IW0Y,IW0Z,II0P;\r
+    IM0,IS,IW0U,IW0V,IW0W,IW0X,IW0Y,IW0Z,IQ0AG,IQ0AH,IQ0AI,IQ0AK,IQ0AL,IQ0AM,\r
+    IQ0EH,IQ0HO,IQ0QP,IQ0SS;\r
 Sicily:                   15:  28:  EU:   37.50:   -14.00:    -1.0:  *IT9:\r
     IB9,ID9,IE9,IF9,II9,IJ9,IO9,IQ9,IR9,IT,IU9,IW9,IZ9;\r
 Djibouti:                 37:  48:  AF:   11.60:   -43.20:    -3.0:  J2:\r
@@ -412,9 +411,7 @@ Japan:                    25:  45:  AS:   35.70:  -139.80:    -9.0:  JA:
     7J,7K,7L,7M,7N,8J,8K,8L,8M,8N,JA,JB,JC,JE,JF,JG,JH,JI,JJ,JK,JL,JM,JN,JO,\r
     JP,JQ,JR,JS;\r
 Minami Torishima:         27:  90:  OC:   24.30:  -154.00:   -10.0:  JD/m:\r
-    7J1ACH,JA6GXK/JD1,JD1/JI7BCD,JD1BIE/JD1,JD1BIP,JD1BIU,JD1BIY,JD1BIZ,\r
-    JD1BJA,JD1BJE,JD1BME,JD1BMM,JD1YAA,JD1YBJ,JG8NQJ/JD1,JL1KFR/JD1,\r
-    JR6TYH/JD1;\r
+    JA6GXK/JD1,JD1/JI7BCD,JD1BME,JD1BMM,JD1YAA,JD1YBJ;\r
 Ogasawara:                27:  45:  AS:   27.50:  -141.00:   -10.0:  JD/o:\r
     JD1;\r
 Mongolia:                 23:  32:  AS:   47.90:  -106.90:    -8.0:  JT:\r
@@ -431,50 +428,50 @@ United States:            05:  08:  NA:   43.00:    87.90:     5.0:  K:
     4U1WB,AA,AB,AC,AD,AE,AF,AG,AI,AJ,AK,K,N,W,AA0CY(5)[8],AA3VA(4),AB4EJ(4),\r
     AB4GG(4),AC4PY(4),AD4EB(4),AD8J(5),AE9F(3)[6],AG3V(4)[7],AG4W(4),\r
     AH0AH(5)[8],AH2AK(5)[8],AH6HJ(5)[8],AH6RI(3)[6],AH8M(5)[8],AL0F(3)[6],\r
-    AL1VE(5)[8],AL7C(4)[8],AL7KT(5)[8],AL7LV(5)[8],AL7NS(5)[8],AL7O(4)[7],\r
-    AL7QQ(4)[7],AL7W(3)[6],K0COP(5)[8],K0JJ(3)[6],K0JJM(4)[7],K0JJR(4)[7],\r
-    K0LUZ(5)[8],K0TV(5)[8],K0TVD(4)[7],K1GU(4),K1GUG(5),K1LKR(3)[6],K1LT(4),\r
-    K1NG(4),K1NT(4)[7],K1NTR(5)[8],K1TN(4),K1TU(4)[7],K2AAW(4),K2BA(4)[7],\r
-    K2HT(4)[7],K2HTO(5)[8],K2RD(3)[6],K2VCO(3)[6],K2VV(4)[7],K3CQ(4),K3GP(4),\r
-    K3IE(4),K3PA(4)[7],K3WT(4)[7],K4AMC(4),K4BEV(4),K4BP(4),K4BX(4),K4BXC(5),\r
-    K4EJQ(4),K4FXN(4),K4HAL(4),K4IE(4),K4IU(4)[7],K4JA(4),K4JNY(4),K4LTA(4),\r
-    K4NO(4),K4OAQ(4),K4RO(4),K4SAC(4),K4TD(4),K4VU(3)[6],K4VUD(5)[8],K4WI(4),\r
-    K4WW(4),K4WX(4),K4XG(4),K4XU(3)[6],K4ZGB(4),K5KG(5)[8],K5MA(5)[8],\r
-    K5RC(3)[6],K5RR(3)[6],K5ZD(5)[8],K5ZDG(4)[7],K6EID(5)[8],K6XT(4)[7],\r
-    K7ABV(4)[6],K7BG(4)[6],K7CMZ(5)[8],K7CS(5)[8],K7GM(5)[8],K7GMF(3)[6],\r
-    K7IA(4)[7],K7RE(4)[7],K7REL(3)[6],K7SV(5)[8],K7TD(4)[7],K7UP(4)[7],\r
-    K7VU(4)[7],K8AC(5),K8IA(3)[6],K8JQ(5),K8OQL(5),K8OSF(5),K8XS(5),K8YC(5),\r
-    K9AW(5),K9ES(5),K9FY(5),K9HUY(5),K9JF(3)[6],K9OM(5),K9VV(5),KA2EYH(4),\r
-    KA8Q(5),KB7Q(4)[6],KC3MR(4),KC7UP(4)[6],KD5M(5)[8],KD5MDO(4)[7],KE4MBP(4),\r
-    KE4OAR(4),KE7NO(4)[6],KH2D(5)[8],KH6DX(3)[6],KH6GJV(3)[6],KH6HHS(5)[8],\r
-    KH6OE(4)[8],KH6QAI(3)[6],KH6QAJ(3)[6],KH6RW(3)[6],KI6DY(4)[7],KK9A(5),\r
-    KL0ET(4)[8],KL0LN(4)[8],KL1IF(4)[8],KL2A/7(3)[6],KL7FDQ(3)[6],KL7WP(3)[6],\r
-    KL7XX(4)[8],KM4FO(4),KM6JD(5)[8],KN4Q(4),KN4QS(4)[7],KN5H(3)[6],\r
-    KN6RO(5)[8],KN8J(5),KO7X(4)[7],KP2N(5)[8],KP4E(4)[8],KS7T(4)[6],\r
-    KU1CW(4)[7],KU8E(5),KY1V(4),KY4AA(4),KY4Z(4)[7],N0AX(3)[6],N1LN(4)[7],\r
-    N1SZ(4)[7],N1WI(4),N1ZP(4),N2BJ(4),N2BJL(5),N2IC(4)[7],N2LA(4)[7],\r
-    N2NB(3)[6],N2WN(4),N3AIU(4)[7],N3BB(4)[7],N3ZZ(3)[6],N4CVO(4),N4DD(4),\r
-    N4DW(4),N4GK(4),N4GN(4),N4IR(4),N4IRR(5),N4JF(4),N4KG(4),N4KZ(4),N4NO(4),\r
-    N4OGW(4)[7],N4QS(4),N4SL(3)[6],N4TN(4),N4TZ(4),N4UW(4),N4VV(4),N4XM(4),\r
-    N4ZZ(4),N6AR(5)[8],N6MW(5)[8],N6MWA(3)[6],N6RFM(5)[8],N6ZO(5)[8],\r
-    N6ZZ(4)[7],N7DC(5)[8],N7DF(4)[7],N7FLT(4)[6],N7IV(4)[7],N7NG(5)[8],\r
-    N7VMR(4)[6],N8FF(5),N8II(5),N8NA(5),N8PR(5),N8RA(5),N8WXQ(5),N9ADG(3)[6],\r
-    NA4K(4),NA4M(4)[7],NA4MA(5)[8],ND2T(3)[6],ND9M(5),NH7C(5)[8],NJ4I(4),\r
-    NL7AU(5)[8],NL7CO(4)[7],NL7XM(5)[8],NP3D(5)[8],NQ4U(4),NU4B(4),NU4BP(5),\r
-    NW7MT(4)[6],NW8U(5),NX9T(5),NY4N(4),NY6DX(5)[8],W0RLI(3)[6],W0UCE(5)[8],\r
-    W0YK(3)[6],W0YR(5)[8],W0YRN(4)[7],W0ZZ(3)[6],W0ZZQ(4)[7],W1DY(4)[7],\r
-    W1DYH(5)[8],W1DYJ(5)[8],W1MVY(3)[6],W1RH(3)[6],W1SRD(3)[6],W2OO(4),\r
-    W2VJN(3)[6],W3CP(3)[6],W3HDH(4),W4BCG(4),W4CID(4),W4DAN(4),W4DHE(4),\r
-    W4DVG(4),W4EEH(4),W4EF(3)[6],W4FMS(4),W4GKM(4),W4HZD(4),W4JSI(4),W4KW(4),\r
-    W4LC(4),W4LIA(4),W4NBS(4),W4NI(4),W4NTI(4),W4NZ(4),W4PA(4),W4RYW(4),\r
-    W4TDB(4),W4TYU(4),W4YOK(4)[7],W5KI(5)[8],W5REA(5)[8],W6AAN(5)[8],\r
-    W6DSQ(4)[8],W6FC(5)[8],W6IHG(5)[8],W6JV(5)[8],W6LFB(4)[7],W6NWS(5)[8],\r
-    W6TER(4)[7],W6UB(4)[8],W6XR(5)[8],W6YJ(4)[7],W7FG(4)[7],W7LPF(5)[8],\r
-    W7LR(4)[6],W7LRD(3)[6],W7QF(5)[8],W7SE(4)[7],W8AEF(3)[6],W8FJ(5),W8HGH(5),\r
-    W8TN(5),W8WEJ(5),W8ZA(5),W9GE(5),W9GEN(4),W9IGJ(5),W9MAK(3)[6],\r
-    W9NGA(3)[6],WA0KDS(3)[6],WA1FCN(4),WA1MKE(4),WA1UJU(4),WA2MNO(4)[7],\r
-    WA4GLH(4),WA4JA(4),WA4OSD(4),WA5VGI(3)[6],WA8WV(5),WB2ORD(4),WB4YDL(4),\r
-    WB4ZBI(4),WB6BWZ(5)[8],WB8YQJ(3)[6],WB8YYY(5),WD4K(4),WD4OHD(4),\r
+    AL1VE(5)[8],AL4T(5)[8],AL7C(4)[8],AL7KT(5)[8],AL7LV(5)[8],AL7NS(5)[8],\r
+    AL7O(4)[7],AL7QQ(4)[7],AL7W(3)[6],K0COP(5)[8],K0JJ(3)[6],K0JJM(4)[7],\r
+    K0JJR(4)[7],K0LUZ(5)[8],K0TV(5)[8],K0TVD(4)[7],K1GU(4),K1GUG(5),\r
+    K1LKR(3)[6],K1LT(4),K1NG(4),K1NT(4)[7],K1NTR(5)[8],K1TN(4),K1TU(4)[7],\r
+    K2AAW(4),K2BA(4)[7],K2HT(4)[7],K2HTO(5)[8],K2RD(3)[6],K2VCO(3)[6],\r
+    K2VV(4)[7],K3CQ(4),K3GP(4),K3IE(4),K3PA(4)[7],K3WT(4)[7],K4AMC(4),\r
+    K4BEV(4),K4BP(4),K4BX(4),K4BXC(5),K4EJQ(4),K4FXN(4),K4HAL(4),K4IE(4),\r
+    K4IU(4)[7],K4JA(4),K4JNY(4),K4LTA(4),K4NO(4),K4OAQ(4),K4RO(4),K4SAC(4),\r
+    K4TD(4),K4VU(3)[6],K4VUD(5)[8],K4WI(4),K4WW(4),K4WX(4),K4XG(4),K4XU(3)[6],\r
+    K4ZGB(4),K5KG(5)[8],K5MA(5)[8],K5RC(3)[6],K5RR(3)[6],K5ZD(5)[8],\r
+    K5ZDG(4)[7],K6EID(5)[8],K6XT(4)[7],K7ABV(4)[6],K7BG(4)[6],K7CMZ(5)[8],\r
+    K7CS(5)[8],K7GM(5)[8],K7GMF(3)[6],K7IA(4)[7],K7RE(4)[7],K7REL(3)[6],\r
+    K7SV(5)[8],K7TD(4)[7],K7UP(4)[7],K7VU(4)[7],K8AC(5),K8IA(3)[6],K8JQ(5),\r
+    K8OQL(5),K8OSF(5),K8XS(5),K8YC(5),K9AW(5),K9ES(5),K9FY(5),K9HUY(5),\r
+    K9JF(3)[6],K9OM(5),K9VV(5),KA2EYH(4),KA8Q(5),KB7Q(4)[6],KC3MR(4),\r
+    KC7UP(4)[6],KD5M(5)[8],KD5MDO(4)[7],KE4MBP(4),KE4OAR(4),KE7NO(4)[6],\r
+    KH2D(5)[8],KH6DX(3)[6],KH6GJV(3)[6],KH6HHS(5)[8],KH6OE(4)[8],KH6QAI(3)[6],\r
+    KH6QAJ(3)[6],KH6RW(3)[6],KI6DY(4)[7],KK9A(5),KL0ET(4)[8],KL0LN(4)[8],\r
+    KL1IF(4)[8],KL7FDQ(3)[6],KL7WP(3)[6],KL7XX(4)[8],KM4FO(4),KM6JD(5)[8],\r
+    KN4Q(4),KN4QS(4)[7],KN5H(3)[6],KN6RO(5)[8],KN8J(5),KO7X(4)[7],KP2N(5)[8],\r
+    KP4E(4)[8],KS7T(4)[6],KU1CW(4)[7],KU8E(5),KY1V(4),KY4AA(4),KY4Z(4)[7],\r
+    N0AX(3)[6],N1LN(4)[7],N1SZ(4)[7],N1WI(4),N1ZP(4),N2BJ(4),N2BJL(5),\r
+    N2IC(4)[7],N2LA(4)[7],N2NB(3)[6],N2WN(4),N3AIU(4)[7],N3BB(4)[7],\r
+    N3ZZ(3)[6],N4CVO(4),N4DD(4),N4DW(4),N4GK(4),N4GN(4),N4IR(4),N4IRR(5),\r
+    N4JF(4),N4KG(4),N4KZ(4),N4NO(4),N4OGW(4)[7],N4QS(4),N4SL(3)[6],N4TN(4),\r
+    N4TZ(4),N4UW(4),N4VV(4),N4XM(4),N4ZZ(4),N6AR(5)[8],N6MW(5)[8],N6MWA(3)[6],\r
+    N6RFM(5)[8],N6ZO(5)[8],N6ZZ(4)[7],N7DC(5)[8],N7DF(4)[7],N7FLT(4)[6],\r
+    N7IV(4)[7],N7NG(5)[8],N7VMR(4)[6],N8FF(5),N8II(5),N8NA(5),N8PR(5),N8RA(5),\r
+    N8WXQ(5),N9ADG(3)[6],NA4K(4),NA4M(4)[7],NA4MA(5)[8],ND2T(3)[6],ND9M(5),\r
+    NH7C(5)[8],NJ4I(4),NL7AU(5)[8],NL7CO(4)[7],NL7XM(5)[8],NP3D(5)[8],NQ4U(4),\r
+    NU4B(4),NU4BP(5),NW7MT(4)[6],NW8U(5),NX9T(5),NY4N(4),NY6DX(5)[8],\r
+    W0RLI(3)[6],W0UCE(5)[8],W0YK(3)[6],W0YR(5)[8],W0YRN(4)[7],W0ZZ(3)[6],\r
+    W0ZZQ(4)[7],W1DY(4)[7],W1DYH(5)[8],W1DYJ(5)[8],W1MVY(3)[6],W1RH(3)[6],\r
+    W1SRD(3)[6],W2OO(4),W2VJN(3)[6],W3CP(3)[6],W3HDH(4),W4BCG(4),W4CID(4),\r
+    W4DAN(4),W4DHE(4),W4DVG(4),W4EEH(4),W4EF(3)[6],W4FMS(4),W4GKM(4),W4HZD(4),\r
+    W4JSI(4),W4KW(4),W4LC(4),W4LIA(4),W4NBS(4),W4NI(4),W4NTI(4),W4NZ(4),\r
+    W4PA(4),W4RYW(4),W4TDB(4),W4TYU(4),W4YOK(4)[7],W5KI(5)[8],W5REA(5)[8],\r
+    W6AAN(5)[8],W6DSQ(4)[8],W6FC(5)[8],W6IHG(5)[8],W6JV(5)[8],W6LFB(4)[7],\r
+    W6NWS(5)[8],W6TER(4)[7],W6UB(4)[8],W6XR(5)[8],W6YJ(4)[7],W7FG(4)[7],\r
+    W7LPF(5)[8],W7LR(4)[6],W7LRD(3)[6],W7QF(5)[8],W7SE(4)[7],W8AEF(3)[6],\r
+    W8FJ(5),W8HGH(5),W8TN(5),W8WEJ(5),W8ZA(5),W9GE(5),W9GEN(4),W9IGJ(5),\r
+    W9MAK(3)[6],W9NGA(3)[6],WA0KDS(3)[6],WA1FCN(4),WA1MKE(4),WA1UJU(4),\r
+    WA2MNO(4)[7],WA4GLH(4),WA4JA(4),WA4OSD(4),WA5VGI(3)[6],WA8WV(5),WB2ORD(4),\r
+    WB4YDL(4),WB4ZBI(4),WB6BWZ(5)[8],WB8YQJ(3)[6],WB8YYY(5),WD4K(4),WD4OHD(4),\r
     WG7Y(4)[7],WH0AI(4)[8],WH6ASW/M(3)[6],WJ9B(5),WL7BPY(4)[7],WL7K(3)[6],\r
     WN4M(4),WO4O(4),WO5D(5)[8],WP4JBG(4)[8],WS4Y(4)[7],WT5L(5)[8],WX4TM(4);\r
 Guantanamo Bay:           08:  11:  NA:   19.90:    75.20:     5.0:  KG4:\r
@@ -504,7 +501,7 @@ Swains Island:            32:  62:  OC:  -11.05:   171.25:    11.0:  KH8/s:
 Wake I.:                  31:  65:  OC:   19.30:  -166.60:   -12.0:  KH9:\r
     AH9,KH9,NH9,WH9;\r
 Alaska:                   01:  01:  NA:   61.20:   150.00:     9.0:  KL:\r
-    AL,KL,NL,WL;\r
+    AL,KL,NL,WL,KW1W;\r
 Navassa I.:               08:  11:  NA:   18.40:    75.00:     5.0:  KP1:\r
     KP1,NP1,WP1;\r
 Virgin Is.:               08:  11:  NA:   18.30:    64.90:     5.0:  KP2:\r
@@ -516,10 +513,10 @@ Desecheo I.:              08:  11:  NA:   18.30:    67.50:     5.0:  KP5:
 Norway:                   14:  18:  EU:   60.00:   -10.70:    -1.0:  LA:\r
     LA,LB,LC,LD,LE,LF,LG,LH,LI,LJ,LK,LL,LM,LN;\r
 Argentina:                13:  14:  SA:  -34.60:    58.40:     3.0:  LU:\r
-    AY,AZ,L2,L3,L4,L5,L6,L7,L8,L84VI/D,L9,LO,LP,LQ,LR,LS,LT,LU,LU1DZ/E,LV,LW,\r
-    AY0N/X,AY3DR/D,AY4EJ/D,AY5E/D,AY7DSY/D,DJ4SN/LU/X,L20ARC/D,L21ESC/LH,\r
-    L25E/D,L30EY/D,L30EY/V,L40E/D,L44D/D,L80AA/D,L8D/X,LO0D/D,LO7E/D,\r
-    LU/DH4PB/R,LU/DH4PB/S,LU1AEE/D,LU1AF/D,LU1CDP/D,LU1DK/D,LU1DMA/E,LU1DZ/P,\r
+    AY,AZ,L2,L3,L4,L5,L6,L7,L8,L84VI/D,L9,LO,LP,LQ,LR,LS,LT,LU,LV,LW,AY0N/X,\r
+    AY3DR/D,AY4EJ/D,AY5E/D,AY7DSY/D,DJ4SN/LU/X,L20ARC/D,L21ESC/LH,L25E/D,\r
+    L30EY/D,L30EY/V,L40E/D,L44D/D,L80AA/D,L8D/X,LO0D/D,LO7E/D,LU/DH4PB/R,\r
+    LU/DH4PB/S,LU1AEE/D,LU1AF/D,LU1CDP/D,LU1DK/D,LU1DMA/E,LU1DZ/E,LU1DZ/P,\r
     LU1DZ/Q,LU1DZ/R,LU1DZ/S,LU1DZ/X,LU1EJ/W,LU1EQ/D,LU1EYW/D,LU1OFN/I,\r
     LU1VOF/D,LU1VZ/V,LU1XAW/X,LU1XY/X,LU1YU/D,LU1YY/Y,LU2DT/D,LU2DT/LH,\r
     LU2DVI/H,LU2EE/D,LU2EE/E,LU2EJB/X,LU2VC/D,LU2WV/O,LU2XX/X,LU3CQ/D,\r
@@ -537,7 +534,7 @@ Argentina:                13:  14:  SA:  -34.60:    58.40:     3.0:  LU:
     LU8EHQ/D,LU8EHQ/E,LU8EHQ/W,LU8EKB/W,LU8EKC/D,LU8EOT/X,LU8EOT/Y,LU8ERH/D,\r
     LU8EXJ/D,LU8EXN/D,LU8FOZ/V,LU8VCC/D,LU8XC/X,LU8XW/X,LU9ARB/D,LU9AUC/D,\r
     LU9DBK/X,LU9DKX/X,LU9EI/F,LU9EJS/E,LU9ESD/D,LU9ESD/V,LU9ESD/Y,LU9EV/LH,\r
-    LU9JMG/J,LW1DAL/D,LW1EXU/D,LW1EXU/Y,LW2DX/D,LW2DX/P,LW2DX/Q,LW2DX/R,\r
+    LU9JMG/J,LW1DAL/D,LW1EXU/D,LW1EXU/Y,LW2DX/E,LW2DX/P,LW2DX/Q,LW2DX/R,\r
     LW2DX/S,LW2DX/Y,LW2ENB/D,LW3DKC/D,LW3DKC/E,LW3DKO/D,LW3DKO/E,LW3HAQ/D,\r
     LW4DRH/D,LW4DRH/E,LW4DRV/D,LW4EM/E,LW4EM/LH,LW5DR/LH,LW5DWX/D,LW5EE/D,\r
     LW5EE/V,LW5EOL/D,LW6DTM/D,LW7DAF/D,LW7DAF/W,LW7DLY/D,LW7DNS/E,LW8DMK/D,\r
@@ -627,7 +624,7 @@ Mount Athos:              20:  28:  EU:   40.20:   -24.30:    -2.0:  SV/a:
 Dodecanese:               20:  28:  EU:   36.40:   -28.20:    -2.0:  SV5:\r
     J45,SV5,SW5,SX5,SY5,SZ5;\r
 Crete:                    20:  28:  EU:   35.40:   -25.20:    -2.0:  SV9:\r
-    J49,SV9,SW9,SX9,SY9,SZ9,SV0LK,SV0XAZ;\r
+    J49,SV9,SW9,SX9,SY9,SZ9,SV0XAZ;\r
 Tuvalu:                   31:  65:  OC:   -8.70:  -179.20:   -12.0:  T2:\r
     T2;\r
 Western Kiribati:         31:  65:  OC:   -1.40:  -173.20:   -12.0:  T30:\r
@@ -678,9 +675,9 @@ European Russia:          16:  29:  EU:   55.80:   -37.60:    -3.0:  UA:
     R,RD4W[30],RK4W[30],RM4W[30],RN4W[30],RU4W[30],RV4W[30],RW4W[30],U,\r
     UA4W[30],R7C,R7C/1,R7C/3,R7C/4;\r
 Kaliningrad:              15:  29:  EU:   55.00:   -20.50:    -2.0:  UA2:\r
-    R2,RA2,RB2,RC2,RD2,RE2,RF2,RG2,RH2,RI2,RJ2,RK2,RL2,RM2,RN2,RP2,RQ2,RR2,\r
-    RS2,RT2,RU2,RV2,RW2,RX2,RY2,RZ2,U2,UA2,UB2,UC2,UD2,UE2,UF2,UG2,UH2,UI2,\r
-    R5K/2,UA1AAE/2;\r
+    R2,RA2,RB2,RC2,RD2,RE2,RF2,RG2,RH2,RI2,RJ2,RK2,RL2,RM2,RN2,RO2,RP2,RQ2,\r
+    RR2,RS2,RT2,RU2,RV2,RW2,RX2,RY2,RZ2,U2,UA2,UB2,UC2,UD2,UE2,UF2,UG2,UH2,\r
+    UI2,R5K/2,UA1AAE/2;\r
 Asiatic Russia:           17:  30:  AS:   55.00:   -83.00:    -7.0:  UA9:\r
     R0,R450W,R7,R8,R8T(18)[32],R8V(18)[33],R9,R9I(18)[31],R9M(17),R9S(16),\r
     R9T(16),R9W(16),RA0,RA7,RA8,RA8T(18)[32],RA8V(18)[33],RA9,RA9I(18)[31],\r
@@ -700,34 +697,35 @@ Asiatic Russia:           17:  30:  AS:   55.00:   -83.00:    -7.0:  UA9:
     RL8T(18)[32],RL8V(18)[33],RL9,RL9I(18)[31],RL9M(17),RL9S(16),RL9T(16),\r
     RL9W(16),RM0,RM7,RM8,RM8T(18)[32],RM8V(18)[33],RM9,RM9I(18)[31],RM9M(17),\r
     RM9S(16),RM9T(16),RM9W(16),RN0,RN7,RN8,RN8T(18)[32],RN8V(18)[33],RN9,\r
-    RN9I(18)[31],RN9M(17),RN9S(16),RN9T(16),RN9W(16),RP0,RP7,RP8,RP8T(18)[32],\r
-    RP8V(18)[33],RP9,RP9I(18)[31],RP9M(17),RP9S(16),RP9T(16),RP9W(16),RQ0,RQ7,RQ8,\r
-    RQ8T(18)[32],RQ8V(18)[33],RQ9,RQ9I(18)[31],RQ9M(17),RQ9S(16),RQ9T(16),\r
-    RQ9W(16),RR0,RR7,RR8,RR8T(18)[32],RR8V(18)[33],RR9,RR9I(18)[31],RR9M(17),\r
-    RR9S(16),RR9T(16),RR9W(16),RS0,RS7,RS8,RS8T(18)[32],RS8V(18)[33],RS9,\r
-    RS9I(18)[31],RS9M(17),RS9S(16),RS9T(16),RS9W(16),RT0,RT7,RT8,RT8T(18)[32],\r
-    RT8V(18)[33],RT9,RT9I(18)[31],RT9M(17),RT9S(16),RT9T(16),RT9W(16),RU0,RU7,RU8,\r
-    RU8T(18)[32],RU8V(18)[33],RU9,RU9I(18)[31],RU9M(17),RU9S(16),RU9T(16),\r
-    RU9W(16),RV0,RV7,RV8,RV8T(18)[32],RV8V(18)[33],RV9,RV9I(18)[31],RV9M(17),\r
-    RV9S(16),RV9T(16),RV9W(16),RW0,RW7,RW8,RW8T(18)[32],RW8V(18)[33],RW9,\r
-    RW9I(18)[31],RW9M(17),RW9S(16),RW9T(16),RW9W(16),RX0,RX7,RX8,RX8T(18)[32],\r
-    RX8V(18)[33],RX9,RX9I(18)[31],RX9M(17),RX9S(16),RX9T(16),RX9W(16),RY0,RY7,RY8,\r
-    RY8T(18)[32],RY8V(18)[33],RY9,RY9I(18)[31],RY9M(17),RY9S(16),RY9T(16),\r
-    RY9W(16),RZ0,RZ7,RZ8,RZ8T(18)[32],RZ8V(18)[33],RZ9,RZ9I(18)[31],RZ9M(17),\r
-    RZ9S(16),RZ9T(16),RZ9W(16),U0,U7,U8,U8T(18)[32],U8V(18)[33],U9,U9I(18)[31],\r
-    U9M(17),U9S(16),U9T(16),U9W(16),UA0,UA7,UA8,UA8T(18)[32],UA8V(18)[33],UA9,\r
-    UA9I(18)[31],UA9M(17),UA9S(16),UA9T(16),UA9W(16),UB0,UB7,UB8,UB8T(18)[32],\r
-    UB8V(18)[33],UB9,UB9I(18)[31],UB9M(17),UB9S(16),UB9T(16),UB9W(16),UC0,UC7,UC8,\r
-    UC8T(18)[32],UC8V(18)[33],UC9,UC9I(18)[31],UC9M(17),UC9S(16),UC9T(16),\r
-    UC9W(16),UD0,UD7,UD8,UD8T(18)[32],UD8V(18)[33],UD9,UD9I(18)[31],UD9M(17),\r
-    UD9S(16),UD9T(16),UD9W(16),UE0,UE7,UE8,UE8T(18)[32],UE8V(18)[33],UE9,\r
-    UE9I(18)[31],UE9M(17),UE9S(16),UE9T(16),UE9W(16),UF0,UF7,UF8,UF8T(18)[32],\r
-    UF8V(18)[33],UF9,UF9I(18)[31],UF9M(17),UF9S(16),UF9T(16),UF9W(16),UG0,UG7,UG8,\r
-    UG8T(18)[32],UG8V(18)[33],UG9,UG9I(18)[31],UG9M(17),UG9S(16),UG9T(16),\r
-    UG9W(16),UH0,UH7,UH8,UH8T(18)[32],UH8V(18)[33],UH9,UH9I(18)[31],UH9M(17),\r
-    UH9S(16),UH9T(16),UH9W(16),UI0,UI7,UI8,UI8T(18)[32],UI8V(18)[33],UI9,\r
-    UI9I(18)[31],UI9M(17),UI9S(16),UI9T(16),UI9W(16),R30ZF,R35NP,R3F/9,R9HQ(17)[30],\r
-    UE60SWA;\r
+    RN9I(18)[31],RN9M(17),RN9S(16),RN9T(16),RN9W(16),RO0,RO7,RO8,RO8T(18)[32],\r
+    RO8V(18)[33],RO9,RO9I(18)[31],RO9M(17),RO9S(16),RO9T(16),RO9W(16),RP0,RP7,RP8,\r
+    RP8T(18)[32],RP8V(18)[33],RP9,RP9I(18)[31],RP9M(17),RP9S(16),RP9T(16),\r
+    RP9W(16),RQ0,RQ7,RQ8,RQ8T(18)[32],RQ8V(18)[33],RQ9,RQ9I(18)[31],RQ9M(17),\r
+    RQ9S(16),RQ9T(16),RQ9W(16),RR0,RR7,RR8,RR8T(18)[32],RR8V(18)[33],RR9,\r
+    RR9I(18)[31],RR9M(17),RR9S(16),RR9T(16),RR9W(16),RS0,RS7,RS8,RS8T(18)[32],\r
+    RS8V(18)[33],RS9,RS9I(18)[31],RS9M(17),RS9S(16),RS9T(16),RS9W(16),RT0,RT7,RT8,\r
+    RT8T(18)[32],RT8V(18)[33],RT9,RT9I(18)[31],RT9M(17),RT9S(16),RT9T(16),\r
+    RT9W(16),RU0,RU7,RU8,RU8T(18)[32],RU8V(18)[33],RU9,RU9I(18)[31],RU9M(17),\r
+    RU9S(16),RU9T(16),RU9W(16),RV0,RV7,RV8,RV8T(18)[32],RV8V(18)[33],RV9,\r
+    RV9I(18)[31],RV9M(17),RV9S(16),RV9T(16),RV9W(16),RW0,RW7,RW8,RW8T(18)[32],\r
+    RW8V(18)[33],RW9,RW9I(18)[31],RW9M(17),RW9S(16),RW9T(16),RW9W(16),RX0,RX7,RX8,\r
+    RX8T(18)[32],RX8V(18)[33],RX9,RX9I(18)[31],RX9M(17),RX9S(16),RX9T(16),\r
+    RX9W(16),RY0,RY7,RY8,RY8T(18)[32],RY8V(18)[33],RY9,RY9I(18)[31],RY9M(17),\r
+    RY9S(16),RY9T(16),RY9W(16),RZ0,RZ7,RZ8,RZ8T(18)[32],RZ8V(18)[33],RZ9,\r
+    RZ9I(18)[31],RZ9M(17),RZ9S(16),RZ9T(16),RZ9W(16),U0,U7,U8,U8T(18)[32],\r
+    U8V(18)[33],U9,U9I(18)[31],U9M(17),U9S(16),U9T(16),U9W(16),UA0,UA7,UA8,\r
+    UA8T(18)[32],UA8V(18)[33],UA9,UA9I(18)[31],UA9M(17),UA9S(16),UA9T(16),\r
+    UA9W(16),UB0,UB7,UB8,UB8T(18)[32],UB8V(18)[33],UB9,UB9I(18)[31],UB9M(17),\r
+    UB9S(16),UB9T(16),UB9W(16),UC0,UC7,UC8,UC8T(18)[32],UC8V(18)[33],UC9,\r
+    UC9I(18)[31],UC9M(17),UC9S(16),UC9T(16),UC9W(16),UD0,UD7,UD8,UD8T(18)[32],\r
+    UD8V(18)[33],UD9,UD9I(18)[31],UD9M(17),UD9S(16),UD9T(16),UD9W(16),UE0,UE7,UE8,\r
+    UE8T(18)[32],UE8V(18)[33],UE9,UE9I(18)[31],UE9M(17),UE9S(16),UE9T(16),\r
+    UE9W(16),UF0,UF7,UF8,UF8T(18)[32],UF8V(18)[33],UF9,UF9I(18)[31],UF9M(17),\r
+    UF9S(16),UF9T(16),UF9W(16),UG0,UG7,UG8,UG8T(18)[32],UG8V(18)[33],UG9,\r
+    UG9I(18)[31],UG9M(17),UG9S(16),UG9T(16),UG9W(16),UH0,UH7,UH8,UH8T(18)[32],\r
+    UH8V(18)[33],UH9,UH9I(18)[31],UH9M(17),UH9S(16),UH9T(16),UH9W(16),UI0,UI7,UI8,\r
+    UI8T(18)[32],UI8V(18)[33],UI9,UI9I(18)[31],UI9M(17),UI9S(16),UI9T(16),\r
+    UI9W(16),R30ZF,R35NP,R3F/9,R9HQ(17)[30],UE60SWA;\r
 Uzbekistan:               17:  30:  AS:   41.20:   -69.30:    -5.0:  UK:\r
     UJ,UK,UL,UM;\r
 Kazakhstan:               17:  30:  AS:   43.30:   -76.90:    -5.0:  UN:\r
@@ -763,7 +761,7 @@ Canada:                   05:  09:  NA:   45.00:    80.00:     4.0:  VE:
     VE2III(2),VE2IM(2),VE2KK(2),VE2MTA(2),VE2MTB(2),VE2NN(2),VE2NRK(2),\r
     VE2PR(2),VE2QRZ(2),VE2RB(2),VE2TVU(2),VE2UA(2),VE2VH(2),VE2WDX(2),\r
     VE2WT(2),VE2XAA/2(2),VE2XY(2),VE2YM(2),VE2Z(2),VE2ZC(5),VE2ZM(5),VE2ZV(5),\r
-    VE3EY/2(2),VE3NE/2(2),VE3RHJ/2(2),VE8AJ(2),VE8PW(2),VE8RCS(2),VER20071024,\r
+    VE3EY/2(2),VE3NE/2(2),VE3RHJ/2(2),VE8AJ(2),VE8PW(2),VE8RCS(2),VER20071116,\r
     VY0AA(4)[3],VY0PW(4)[3],VY2MGY/3(4)[4];\r
 Australia:                30:  59:  OC:  -22.00:  -135.00:   -10.0:  VK:\r
     AX,VH,VI,VJ,VK,VL,VM,VN,VZ;\r
@@ -799,10 +797,9 @@ Ducie I.:                 32:  63:  OC:  -24.67:   124.79:     8.5:  VP6/d:
 Falkland Is.:             13:  16:  SA:  -51.70:    57.90:     4.0:  VP8:\r
     VP8;\r
 South Georgia:            13:  73:  SA:  -54.30:    36.80:     2.0:  VP8/g:\r
-    VP8GEO,VP8SGB,VP8SGK;\r
+    VP8DKX,VP8SGK;\r
 South Shetland:           13:  73:  SA:  -62.00:    58.30:     4.0:  VP8/h:\r
-    CE9A,CE9R,CA8WCI/9,D88S,DT8A,HF0POL,HF0QF,HL0KSJ,HL5BDS,HL8KSJ,LU/R1ANF,\r
-    LU1ZC,LZ0A,OL0ANT,R1ANF,VP8/LZ1UQ,VP8DJK;\r
+    DT8A,HF0POL,HL8KSJ,LU/R1ANF,LU1ZC,LZ0A,R1ANF,VP8/LZ1UQ,VP8DJK;\r
 South Orkney:             13:  73:  SA:  -60.00:    45.50:     3.0:  VP8/o:\r
     AY1ZA,LU1ZA,LU2ERA/Z;\r
 South Sandwich:           13:  73:  SA:  -57.00:    26.70:     2.0:  VP8/s:\r
@@ -814,7 +811,7 @@ Chagos Is.:               39:  41:  AF:   -7.30:   -72.40:    -5.0:  VQ9:
 Hong Kong:                24:  44:  AS:   22.30:  -114.30:    -8.0:  VR:\r
     VR;\r
 India:                    22:  41:  AS:   22.00:   -80.00:    -5.5:  VU:\r
-    8T,8U,8V,8W,8X,8Y,AT,AU,AV,AW,VT,VU,VV,VW;\r
+    8T,8U,8V,8W,8X,8Y,AT,AU,AV,AW,VT,VU,VV,VW,AT7CD;\r
 Andaman & Nicobar:        26:  49:  AS:   11.70:   -92.80:    -5.5:  VU4:\r
     8T4,8U4,8V4,8W4,8X4,8Y4,AT4,AU4,AV4,AW4,VT4,VU4,VV4,VW4,VU3VPX,VU3VPY;\r
 Laccadive Is.:            22:  41:  AS:   10.00:   -73.00:    -5.5:  VU7:\r
index 92e252d66b373e5d7f972651535cf886844f6046..b6e4ac31256c98018c60045319d5c1c5a42909a9 100644 (file)
   '7H' => '231',
   '7I' => '231',
   '7J' => '92',
-  '7J1ACH' => '93',
   '7K' => '92',
   '7L' => '92',
   '7M' => '92',
   '9M0' => '261',
   '9M2' => '302',
   '9M2/PG5M' => '261',
+  '9M2/PG5M/6' => '303,527',
   '9M4' => '302',
   '9M4SDX' => '261',
   '9M50' => '302',
   'AL' => '112',
   'AL0F' => '220',
   'AL1VE' => '220',
+  'AL4T' => '220',
   'AL7C' => '220',
   'AL7KT' => '220',
   'AL7LV' => '220',
   'AT0' => '365',
   'AT4' => '214',
   'AT7' => '215',
+  'AT7CD' => '213,456,457,458',
   'AU' => '459',
   'AU4' => '214',
   'AU7' => '215',
   'CA0' => '17',
   'CA0X' => '18',
   'CA0Z' => '19',
-  'CA8WCI/9' => '208',
   'CB' => '16',
   'CB0' => '17',
   'CB0X' => '18',
   'CE0Y' => '17',
   'CE0Z' => '19',
   'CE9' => '99,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384',
-  'CE9A' => '208',
-  'CE9R' => '208',
   'CF' => '434',
   'CG' => '434',
   'CH' => '434',
   'D6' => '31',
   'D7' => '78',
   'D8' => '78',
-  'D88S' => '208',
   'D9' => '78',
   'DA' => '32',
   'DB' => '32',
   'E5' => '250',
   'E5/N' => '249',
   'E5/S' => '250',
-  'E51PDX' => '249',
-  'E51PEN' => '249',
-  'E51QMA' => '249',
-  'E51TUG' => '249',
   'E51WL' => '249',
   'E7' => '325',
   'EA' => '34',
-  'EA5ON/6' => '35',
   'EA6' => '35',
   'EA8' => '36',
   'EA9' => '37,346,347',
   'EC8' => '36',
   'EC9' => '346,347',
   'ED' => '34',
+  'ED5ON/6' => '35',
   'ED6' => '35',
   'ED8' => '36',
   'ED9' => '346,347',
   'FR/G' => '51',
   'FR/J' => '52',
   'FR/T' => '53',
-  'FR5ZQ/T' => '53',
   'FR5ZU/T' => '53',
   'FS' => '54',
   'FT' => '55,350,57,366',
   'HE0' => '70',
   'HF' => '147',
   'HF0POL' => '208',
-  'HF0QF' => '208',
   'HG' => '68',
   'HH' => '73',
   'HI' => '74',
   'HK0M' => '76',
   'HK0TU' => '76',
   'HL' => '78',
-  'HL0KSJ' => '208',
-  'HL5BDS' => '208',
   'HL8KSJ' => '208',
   'HM' => '317',
   'HN' => '232',
   'IF9' => '356',
   'IG9' => '354',
   'IH9' => '355',
-  'II0P' => '85',
   'II9' => '356',
   'IJ9' => '356',
   'IM0' => '85',
   'IO9' => '356',
+  'IQ0AG' => '85',
+  'IQ0AH' => '85',
+  'IQ0AI' => '85',
+  'IQ0AK' => '85',
+  'IQ0AL' => '85',
+  'IQ0AM' => '85',
+  'IQ0EH' => '85',
+  'IQ0HO' => '85',
+  'IQ0QP' => '85',
+  'IQ0SS' => '85',
   'IQ9' => '356',
   'IR9' => '356',
   'IS' => '85',
   'JD/O' => '94',
   'JD1' => '94',
   'JD1/JI7BCD' => '93',
-  'JD1BIE/JD1' => '93',
-  'JD1BIP' => '93',
-  'JD1BIU' => '93',
-  'JD1BIY' => '93',
-  'JD1BIZ' => '93',
-  'JD1BJA' => '93',
-  'JD1BJE' => '93',
   'JD1BME' => '93',
   'JD1BMM' => '93',
   'JD1YAA' => '93',
   'JE' => '92',
   'JF' => '92',
   'JG' => '92',
-  'JG8NQJ/JD1' => '93',
   'JH' => '92',
   'JI' => '92',
   'JJ' => '92',
   'JK' => '92',
   'JL' => '92',
-  'JL1KFR/JD1' => '93',
   'JM' => '92',
   'JN' => '92',
   'JO' => '92',
   'JP' => '92',
   'JQ' => '92',
   'JR' => '92',
-  'JR6TYH/JD1' => '93',
   'JS' => '92',
   'JT' => '95,363',
   'JU' => '95',
   'K1TU' => '220',
   'K2' => '492,495',
   'K2AAW' => '220',
-  'K2ARB/KC4' => '99,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384',
   'K2BA' => '220',
   'K2HT' => '220',
   'K2HTO' => '220',
   'KC4/K2ARB' => '99,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384',
   'KC4AAA' => '99,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384',
   'KC4AAC' => '99,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384',
-  'KC4AAF' => '99,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384',
   'KC4USB' => '99,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384',
   'KC4USV' => '99,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384',
-  'KC4USX' => '99,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384',
   'KC5' => '461,479,486,493,497,504',
   'KC6' => '463,464,465,466',
   'KC7' => '462,474,487,494,498,505,508,511',
   'KL0ET' => '220',
   'KL0LN' => '220',
   'KL1IF' => '220',
-  'KL2A/7' => '220',
   'KL7' => '112,389,390,391,392',
   'KL7FDQ' => '220',
   'KL7WP' => '220',
   'KL7XX' => '220',
-  'KL9K' => '78',
   'KM0' => '467,473,477,484,485,489,490,502',
   'KM1' => '468,480,482,491,500,507',
   'KM2' => '492,495',
   'KV9' => '475,476,509',
   'KW0' => '467,473,477,484,485,489,490,502',
   'KW1' => '468,480,482,491,500,507',
+  'KW1W' => '392',
   'KW2' => '492,495',
   'KW3' => '469,470,481,499',
   'KW4' => '460,471,472,478,488,501,503,506',
   'LW1DAL/D' => '119,396,397',
   'LW1EXU/D' => '119,396,397',
   'LW1EXU/Y' => '119,396,397',
-  'LW2DX/D' => '119,396,397',
+  'LW2DX/E' => '119,396,397',
   'LW2DX/P' => '119,396,397',
   'LW2DX/Q' => '119,396,397',
   'LW2DX/R' => '119,396,397',
   'MN' => '62',
   'MP' => '65',
   'MS' => '64',
+  'MS0ZCG' => '351',
   'MT' => '61',
   'MU' => '65',
   'MVI' => '312',
   'OJ0' => '127',
   'OK' => '128',
   'OL' => '128',
-  'OL0ANT' => '208',
   'OM' => '320',
   'ON' => '129',
   'OO' => '129',
   'R0' => '422,424,428',
   'R1' => '418',
   'R1AN' => '385',
-  'R1ANB' => '99,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384',
-  'R1ANC' => '99,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384',
-  'R1AND' => '99,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384',
   'R1ANF' => '208',
-  'R1ANN' => '99,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384',
-  'R1ANT' => '99,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384',
-  'R1ANZ' => '99,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384',
   'R1FJ' => '174',
   'R1MV' => '312',
   'R2' => '175',
   'RO3' => '419',
   'RO4' => '420',
   'RO6' => '421',
+  'RO7' => '176,425,430',
   'RO8' => '431',
+  'RO8T' => '176,425,430',
+  'RO8V' => '176,425,430',
   'RO9' => '425,430',
+  'RO9I' => '176,425,430',
+  'RO9M' => '176,425,430',
+  'RO9S' => '176,425,430',
+  'RO9T' => '176,425,430',
+  'RO9W' => '176,425,430',
   'RP0' => '422,424,428',
   'RP1' => '418',
   'RP2' => '175',
   'SU' => '149',
   'SV' => '150',
   'SV/A' => '153',
-  'SV0LK' => '152',
   'SV0XAZ' => '152',
   'SV2ASP/A' => '153',
   'SV5' => '151',
   'TO4E' => '52',
   'TO4G' => '51',
   'TO4T' => '43',
-  'TO4WW' => '52',
   'TO5A' => '46',
   'TO5AA' => '46',
   'TO5BG' => '43',
   'TO5GI' => '43',
   'TO5J' => '46',
   'TO5MM' => '46',
-  'TO5R' => '50,51,52,53',
   'TO5ROM' => '43',
   'TO5S' => '43',
   'TO5T' => '46',
   'VE8PW' => '191',
   'VE8RCS' => '191',
   'VE9' => '436',
-  'VER20071024' => '191',
+  'VER20071116' => '191',
   'VERSION' => '536',
   'VF' => '434',
   'VF0' => '191',
   'VP8/LZ1UQ' => '208',
   'VP8/O' => '206',
   'VP8/S' => '207',
-  'VP8BF' => '99,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384',
   'VP8DJB' => '99,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384',
   'VP8DJK' => '208',
   'VP8DKF' => '99,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384',
-  'VP8GEO' => '205',
+  'VP8DKX' => '205',
   'VP8PJ' => '99,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384',
   'VP8ROT' => '99,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384',
-  'VP8SGB' => '205',
   'VP8SGK' => '205',
   'VP8SSI' => '207',
   'VP8THU' => '207',
   'W1DY' => '220',
   'W1DYH' => '220',
   'W1DYJ' => '220',
-  'W1MRQ/KC4' => '99,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384',
   'W1MVY' => '220',
   'W1RH' => '220',
   'W1SRD' => '220',
index 5a88a2d4d5f6bdcdbf2234aca329df7cf899588f..8b415974ed55cef98fd1062cc448576b8ca02a5e 100644 (file)
@@ -857,8 +857,10 @@ sub send_local_config
        } elsif ($self->{do_pc9x}) {
                dbg("send_local_config: doing pc9x");
                my $node = Route::Node::get($self->{call});
-               $self->send_last_pc92_config($main::routeroot);
-               $self->send(pc92a($main::routeroot, $node)) unless $main::routeroot->last_PC92C =~ /$self->{call}/;
+#              $self->send_last_pc92_config($main::routeroot);
+#              $self->send(pc92a($main::routeroot, $node)) unless $main::routeroot->last_PC92C =~ /$self->{call}/;
+               $self->send(pc92a($main::routeroot, $node));
+               $self->send(pc92k($main::routeroot));
        } else {
                # create a list of all the nodes that are not connected to this connection
                # and are not themselves isolated, this to make sure that isolated nodes
index f18089ffaa07db020cfde2bb724ef7e65220cb7f..7839e11c55ea868a81a159aa395b28188c50d98c 100644 (file)
@@ -43,17 +43,19 @@ use vars qw($pc11_max_age $pc23_max_age $last_pc50 $eph_restime $eph_info_restim
                        $investigation_int $pc19_version $myprot_version
                        %nodehops $baddx $badspotter $badnode $censorpc
                        $allowzero $decode_dk0wcy $send_opernam @checklist
-                       $eph_pc15_restime $pc9x_past_age $pc9x_future_age
+                       $eph_pc15_restime $pc9x_past_age
                        $pc10_dupe_age $pc92_slug_changes $last_pc92_slug
-                       $pc92Ain $pc92Cin $pc92Din $pc92Kin
+                       $pc92Ain $pc92Cin $pc92Din $pc92Kin $pc9x_time_tolerance
                   );
 
-$pc9x_past_age = 62*60;                        # maximum age in the past of a px9x (a config record might be the only
-                                                               # thing a node might send - once an hour)
-$pc9x_future_age = 2*3600;             # maximum age in the future ditto
 $pc10_dupe_age = 45;                   # just something to catch duplicate PC10->PC93 conversions
 $pc92_slug_changes = 60;               # slug any changes going outward for this long
 $last_pc92_slug = 0;                   # the last time we sent out any delayed add or del PC92s
+$pc9x_time_tolerance = 15*60;  # the time on a pc9x is allowed to be out by this amount
+$pc9x_past_age = (122*60)+             # maximum age in the past of a px9x (a config record might be the only
+       $pc9x_time_tolerance;           # thing a node might send - once an hour and we allow an extra hour for luck)
+                                # this is actually the partition between "yesterday" and "today" but old.
+
 
 # incoming talk commands
 sub handle_10
@@ -1478,6 +1480,21 @@ sub check_pc9x_t
        my $pc = shift;
        my $create = shift;
 
+       # check that the time is between 0 >= $t < 86400
+       unless ($t >= 0 && $t < 86400) {
+               dbg("PCPROT: time invalid t: $t, ignored") if isdbg('chanerr');
+               return undef;
+       }
+
+       # check that the time of this pc9x is within tolerance (default 15 mins either way)
+       my $now = $main::systime - $main::systime_daystart ;
+       my $diff = abs($now - $t);
+       unless ($diff < $pc9x_time_tolerance || 86400 - $diff < $pc9x_time_tolerance) {
+               my $c = ref $call ? $call->call : $call;
+               dbg("PC9XERR: $c time out of range t: $t now: $now diff: $diff > $pc9x_time_tolerance, ignored") if isdbg('chan');
+               return undef;
+       }
+
        my $parent = ref $call ? $call : Route::Node::get($call);
        if ($parent) {
                # we only do this for external calls whose routing table
@@ -1489,19 +1506,23 @@ sub check_pc9x_t
                        my $lastid = $parent->lastid;
                        if (defined $lastid) {
                                if ($t < $lastid) {
-                                       if ($t+86400-$lastid > $pc9x_past_age) {
+                                       # note that this is where we determine whether this pc9x has come in yesterday
+                                       # but is still greater (modulo 86400) than the lastid or is simply an old
+                                       # duplicate sentence. To determine this we need to do some module 86400
+                                       # arithmetic. High numbers mean that this is an old duplicate sentence,
+                                       # low numbers that it is a new sentence.
+                                       #
+                                       # Typically you will see yesterday being taken on $t = 84, $lastid = 86235
+                                       # and old dupes with $t = 234, $lastid = 256 (which give answers 249 and
+                                       # 86378 respectively in the calculation below).
+                                       #
+                                       if (($t-$lastid)%86400 > $pc9x_past_age) {
                                                dbg("PCPROT: dup id on $t <= lastid $lastid, ignored") if isdbg('chanerr') || isdbg('pc92dedupe');
                                                return undef;
                                        }
                                } elsif ($t == $lastid) {
                                        dbg("PCPROT: dup id on $t == lastid $lastid, ignored") if isdbg('chanerr') || isdbg('pc92dedupe');
                                        return undef;
-                               } else {
-                                       # $t > $lastid, check that the timestamp offered isn't too far away from 'now'
-                                       if ($t-$lastid > $pc9x_future_age ) {
-                                               dbg("PCPROT: id $t too far in the future of lastid $lastid, ignored") if isdbg('chanerr') || isdbg('pc92dedupe');
-                                               return undef;
-                                       }
                                }
                        }
                }
@@ -1510,7 +1531,7 @@ sub check_pc9x_t
        } else {
                return undef;
        }
-       if ('pc92dedupe') {
+       if (isdbg('pc92dedupe')) {
                my $exists = exists $parent->{lastid}; # naughty, naughty :-)
                my $val = $parent->{lastid};
                my $s = $exists ? (defined $val ? $val : 'exists/undef') : 'undef';
index abc098471e7edaf0e7a721887a778359a77b3571..868317a9646234b9093a2598048a3a795f71e8d3 100644 (file)
@@ -181,6 +181,7 @@ sub config
 {
        my $self = shift;
        my $nodes_only = shift || 0;
+       my $width = shift || 79;
        my $level = shift;
        my $seen = shift;
        my @out;
@@ -223,7 +224,7 @@ sub config
                                        } else {
                                                $c = "$ucall?";
                                        }
-                                       if ((length $line) + (length $c) + 1 < 79) {
+                                       if ((length $line) + (length $c) + 1 < $width) {
                                                $line .= $c . ' ';
                                        } else {
                                                $line =~ s/\s+$//;
@@ -251,7 +252,7 @@ sub config
                if ($nref) {
                        my $c = $nref->user_call;
                        dbg("recursing from $call -> $c") if isdbg('routec');
-                       my @rout = $nref->config($nodes_only, $level+1, $seen, @_);
+                       my @rout = $nref->config($nodes_only, $width, $level+1, $seen, @_);
                        if (@rout && @_) {
                                push @out, ' ' x ($level*2) . $self->user_call unless grep /^\s+$call/, @out;
                        }
index e10f759def25f4b6b9e66affbc6af131a5de35b8..9cb0727924a4fceb6476ca2668fdf0c82f88bee3 100644 (file)
@@ -11,6 +11,6 @@ use vars qw($version $subversion $build);
 
 $version = '1.54';
 $subversion = '0';
-$build = '180';
+$build = '181';
 
 1;