diff -Naur libpri-1.4.1/libpri.h libpri-1.4.1-patch/libpri.h
--- libpri-1.4.1/libpri.h	2006-04-28 01:09:11.000000000 +0900
+++ libpri-1.4.1-patch/libpri.h	2007-11-28 11:57:35.911992416 +0900
@@ -55,7 +55,7 @@
 #define PRI_SWITCH_GR303_TMC		9	/* GR-303 Timeslot Management Channel */
 #define PRI_SWITCH_QSIG			10	/* QSIG Switch */
 /* Switchtypes 11 - 20 are reserved for internal use */
-
+#define PRI_SWITCH_NTT			13
 
 /* PRI D-Channel Events */
 #define PRI_EVENT_DCHAN_UP		 1	/* D-channel is up */
diff -Naur libpri-1.4.1/pri.c libpri-1.4.1-patch/pri.c
--- libpri-1.4.1/pri.c	2006-07-07 06:11:37.000000000 +0900
+++ libpri-1.4.1-patch/pri.c	2007-11-28 12:03:24.488000808 +0900
@@ -74,6 +74,8 @@
 		return "GR303 TMC";
 	case PRI_SWITCH_QSIG:
 		return "Q.SIG switch";
+	case PRI_SWITCH_NTT:
+		return "Japanese ISDN switch";
 	default:
 		return "Unknown switchtype";
 	}
diff -Naur libpri-1.4.1/pri_facility.c libpri-1.4.1-patch/pri_facility.c
--- libpri-1.4.1/pri_facility.c	2007-06-07 06:58:22.000000000 +0900
+++ libpri-1.4.1-patch/pri_facility.c	2007-11-28 12:06:04.929609976 +0900
@@ -1735,6 +1735,9 @@
 			case PRI_SWITCH_NI2:
 				add_callername_facility_ies(pri, call, 0);
 				break;
+			case PRI_SWITCH_NTT:
+				add_callername_facility_ies(pri, call, 0);
+				break;
 			default:
 				break;
 		}
@@ -1744,6 +1747,9 @@
 			case PRI_SWITCH_NI2:
 				add_callername_facility_ies(pri, call, 1);
 				break;
+			case PRI_SWITCH_NTT:
+				add_callername_facility_ies(pri, call, 1);
+				break;
 			default:
 				break;
 		}
@@ -1752,6 +1758,8 @@
 #else
 	if (pri->switchtype == PRI_SWITCH_NI2)
 		add_callername_facility_ies(pri, call, (pri->localtype == PRI_CPE));
+	if (pri->switchtype == PRI_SWITCH_NTT)
+		add_callername_facility_ies(pri, call, (pri->localtype == PRI_CPE));
 #endif
 
 	if ((pri->switchtype == PRI_SWITCH_DMS100) && (pri->localtype == PRI_CPE)) {
diff -Naur libpri-1.4.1/pri_timers.h libpri-1.4.1-patch/pri_timers.h
--- libpri-1.4.1/pri_timers.h	2006-02-15 04:22:26.000000000 +0900
+++ libpri-1.4.1-patch/pri_timers.h	2007-11-28 18:43:04.726450440 +0900
@@ -70,6 +70,7 @@
 #define PRI_TIMERS_QSIG PRI_TIMERS_DEFAULT
 #define __PRI_TIMERS_GR303_EOC_INT PRI_TIMERS_DEFAULT
 #define __PRI_TIMERS_GR303_TMC_INT PRI_TIMERS_DEFAULT
+#define PRI_TIMERS_NTT PRI_TIMERS_DEFAULT
 
 #define PRI_TIMERS_ALL {	PRI_TIMERS_UNKNOWN, \
 				PRI_TIMERS_NI2, \
@@ -84,6 +85,7 @@
 				PRI_TIMERS_GR303_TMC, \
 				__PRI_TIMERS_GR303_EOC_INT, \
 				__PRI_TIMERS_GR303_TMC_INT, \
+				PRI_TIMERS_NTT, \
 			}
 
 #endif
diff -Naur libpri-1.4.1/q931.c libpri-1.4.1-patch/q931.c
--- libpri-1.4.1/q931.c	2007-06-20 03:23:36.000000000 +0900
+++ libpri-1.4.1-patch/q931.c	2007-11-28 12:10:18.164112480 +0900
@@ -2813,7 +2813,12 @@
 		c->chanflags = FLAG_PREFERRED;
 	if (req->caller) {
 		libpri_copy_string(c->callernum, req->caller, sizeof(c->callernum));
-		c->callerplan = req->callerplan;
+		//c->callerplan = req->callerplan;
+		if (pri->switchtype == PRI_SWITCH_NTT) {
+			c->callerplan = PRI_UNKNOWN;
+		} else {
+			c->callerplan = req->callerplan;
+		}
 		if (req->callername)
 			libpri_copy_string(c->callername, req->callername, sizeof(c->callername));
 		else
@@ -2850,7 +2855,12 @@
 	}
 	if (req->called) {
 		libpri_copy_string(c->callednum, req->called, sizeof(c->callednum));
-		c->calledplan = req->calledplan;
+		//c->calledplan = req->calledplan;
+		if (pri->switchtype == PRI_SWITCH_NTT) {
+			c->calledplan = PRI_UNKNOWN;
+		} else {
+			c->calledplan = req->calledplan;
+		}
 	} else
 		return -1;
 
@@ -2861,6 +2871,8 @@
 
 	if (req->nonisdn && (pri->switchtype == PRI_SWITCH_NI2))
 		c->progressmask = PRI_PROG_CALLER_NOT_ISDN;
+	else if (req->nonisdn && (pri->switchtype == PRI_SWITCH_NTT))
+		c->progressmask = PRI_PROG_CALLER_NOT_ISDN;
 	else
 		c->progressmask = 0;
 
